1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include <bits/stdc++.h>
const int kMaxN = 1e5 + 5;
int n, q; int a[kMaxN];
bool check(int64_t x, int64_t y, int64_t z) { return x + y > z && x + z > y && y + z > x; }
bool check(int l, int r) { std::vector<int> vec; for (int i = l; i <= r; ++i) vec.emplace_back(a[i]); std::sort(vec.begin(), vec.end()); int mi = 1e9; for (int i = 2; i < (int)vec.size(); ++i) { if (check(vec[i - 2], vec[i - 1], vec[i])) { if (i - 2 > mi) return 1; if (mi == 1e9) mi = i; } } for (int i = 0; i + 5 < (int)vec.size(); ++i) { if (check(vec[i], vec[i + 1], vec[i + 2]) && check(vec[i + 3], vec[i + 4], vec[i + 5])) return 1; if (check(vec[i], vec[i + 1], vec[i + 3]) && check(vec[i + 2], vec[i + 4], vec[i + 5])) return 1; if (check(vec[i], vec[i + 1], vec[i + 4]) && check(vec[i + 2], vec[i + 3], vec[i + 5])) return 1; if (check(vec[i], vec[i + 1], vec[i + 5]) && check(vec[i + 2], vec[i + 3], vec[i + 4])) return 1; if (check(vec[i], vec[i + 2], vec[i + 3]) && check(vec[i + 1], vec[i + 4], vec[i + 5])) return 1; if (check(vec[i], vec[i + 2], vec[i + 4]) && check(vec[i + 1], vec[i + 3], vec[i + 5])) return 1; if (check(vec[i], vec[i + 2], vec[i + 5]) && check(vec[i + 1], vec[i + 3], vec[i + 4])) return 1; if (check(vec[i], vec[i + 3], vec[i + 4]) && check(vec[i + 1], vec[i + 2], vec[i + 5])) return 1; if (check(vec[i], vec[i + 3], vec[i + 5]) && check(vec[i + 1], vec[i + 2], vec[i + 4])) return 1; if (check(vec[i], vec[i + 4], vec[i + 5]) && check(vec[i + 1], vec[i + 2], vec[i + 3])) return 1; } return 0; }
void dickdreamer() { std::cin >> n >> q; for (int i = 1; i <= n; ++i) std::cin >> a[i]; for (int i = 1; i <= q; ++i) { int l, r; std::cin >> l >> r; if (r - l + 1 >= 48) std::cout << "YES\n"; else std::cout << (check(l, r) ? "YES\n" : "NO\n"); } }
int32_t main() { #ifdef ORZXKR freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0); int T = 1; while (T--) dickdreamer(); return 0; }
|