結果
問題 | No.360 増加門松列 |
ユーザー | bal4u |
提出日時 | 2019-05-06 08:57:02 |
言語 | C (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 1,226 bytes |
コンパイル時間 | 250 ms |
コンパイル使用メモリ | 31,872 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-27 02:21:04 |
合計ジャッジ時間 | 1,121 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,812 KB |
testcase_01 | AC | 1 ms
6,940 KB |
testcase_02 | AC | 1 ms
6,944 KB |
testcase_03 | AC | 1 ms
6,944 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 1 ms
6,940 KB |
testcase_06 | AC | 1 ms
6,940 KB |
testcase_07 | AC | 1 ms
6,940 KB |
testcase_08 | AC | 1 ms
6,940 KB |
testcase_09 | AC | 1 ms
6,940 KB |
testcase_10 | AC | 1 ms
6,940 KB |
testcase_11 | AC | 1 ms
6,940 KB |
testcase_12 | AC | 1 ms
6,940 KB |
testcase_13 | AC | 1 ms
6,944 KB |
testcase_14 | AC | 1 ms
6,944 KB |
testcase_15 | AC | 1 ms
6,944 KB |
testcase_16 | AC | 1 ms
6,944 KB |
testcase_17 | AC | 1 ms
6,944 KB |
testcase_18 | AC | 1 ms
6,940 KB |
testcase_19 | AC | 1 ms
6,940 KB |
testcase_20 | AC | 1 ms
6,944 KB |
testcase_21 | AC | 1 ms
6,944 KB |
ソースコード
// yukicoder: No.360 増加門松列 // 2019.5.6 bal4u #include <stdio.h> #include <stdlib.h> int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } /* 2^16までのビット数を数える */ int bitcount(int x) { x = ((x & 0xAAAAAA) >> 1) + (x & 0x555555); x = ((x & 0xCCCCCC) >> 2) + (x & 0x333333); x = ((x & 0xF0F0F0) >> 4) + (x & 0x0F0F0F); x = ((x & 0x00FF00) >> 8) + (x & 0xFF00FF); return x; } int check(int *a, int b0, int b1, int b2) { return (b0 < a[0] || b0 > a[1]) && (b1 < a[1] || b1 > a[2]) && (b2 < a[2] || b2 > a[3]) && b0 < b1 && b1 < b2; } int main() { int i, j, ai, bi; int d[7], a[4], b[3]; for (i = 0; i < 7; i++) scanf("%d", d+i); qsort(d, 7, sizeof(int), cmp); for (i = 1; i < 128; i++) { if (bitcount(i) != 4) continue; ai = bi = 0; for (j = 0; j < 7; j++) { if ((i >> j) & 1) a[ai++] = d[j]; else b[bi++] = d[j]; } if (a[0] < a[1] && a[1] < a[2] && a[2] < a[3]) { if (check(a, b[0], b[1], b[2]) || check(a, b[0], b[2], b[1]) || check(a, b[1], b[0], b[2]) || check(a, b[1], b[2], b[0]) || check(a, b[2], b[0], b[1]) || check(a, b[2], b[1], b[0])) goto OK; } } puts("NO"); return 0; OK: puts("YES"); return 0; }