#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |