結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

// 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;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0