結果
問題 | No.360 増加門松列 |
ユーザー |
![]() |
提出日時 | 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;}