// yukicoder: No.360 増加門松列 // 2019.5.6 bal4u #include #include 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; }