Submission #1247635

#TimeUsernameProblemLanguageResultExecution timeMemory
1247635huydayyAlternating Heights (CCO22_day1problem1)C++20
4 / 25
112 ms4400 KiB
#include <bits/stdc++.h> using namespace std; #define MAXN 200005 int n, k, q; int a[MAXN]; int ans[MAXN]; void solve() { static int in[55], tmp[55]; static vector<int> adj[55]; int l = 1; while (l <= n) { int r = l, turn = 0; for (int i = 1; i <= k; ++i) adj[i].clear(), in[i] = 0; while (r < n) { int u = a[r], v = a[r + 1]; if (u == v) break; if (turn == 0) { adj[u].push_back(v); in[v]++; } else { adj[v].push_back(u); in[u]++; } turn ^= 1; queue<int> q; for (int i = 1; i <= k; ++i) tmp[i] = in[i]; for (int i = 1; i <= k; ++i) if (tmp[i] == 0) q.push(i); int cnt = 0; while (!q.empty()) { int u = q.front(); q.pop(); cnt++; for (int v : adj[u]) { if (--tmp[v] == 0) q.push(v); } } if (cnt < k) break; r++; } for (int i = l; i <= r; ++i) ans[i] = r; l = r + 1; } while (q--) { int x, y; cin >> x >> y; cout << (ans[x] >= y ? "YES" : "NO") << '\n'; } } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k >> q; for (int i = 1; i <= n; ++i) cin >> a[i]; solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...