結果
| 問題 |
No.360 増加門松列
|
| コンテスト | |
| ユーザー |
bal4u
|
| 提出日時 | 2019-05-06 08:57:02 |
| 言語 | C (gcc 13.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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
// 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;
}
bal4u