제출 #1272422

#제출 시각아이디문제언어결과실행 시간메모리
1272422thuhienneAlternating Heights (CCO22_day1problem1)C++20
25 / 25
169 ms4560 KiB
#include <bits/stdc++.h> using namespace std; int n,k,q; int arr[3009]; int maxr[3009]; vector <int> adj[3009]; //co canh tu i -> j khi va chi khi ai > aj void addedge(int u,int v) { adj[u].push_back(v); } void remedge(int u,int v) { for (int i = 0;i < adj[u].size();i++) { if (adj[u][i] == v) { adj[u].erase(adj[u].begin() + i); return; } } } bool circuit; int visited[3009]; void findcircuit(int node) { visited[node] = 1; for (auto nex : adj[node]) if (visited[nex] != 2) { if (visited[nex] == 1) { circuit = 1; return; } findcircuit(nex); if (circuit) return; } visited[node] = 2; } bool checkcircuit() { for (int i = 1;i <= n;i++) visited[i] = 0; circuit = 0; for (int i = 1;i <= n;i++) if (!visited[i]) { findcircuit(i); if (circuit) return 1; } return 0; } int main() { ios_base::sync_with_stdio(0);cin.tie(nullptr); //freopen(".inp","r",stdin); //freopen(".out","w",stdout); cin >> n >> k >> q; for (int i = 1;i <= n;i++) cin >> arr[i]; maxr[n] = n; //odd indices int pt = n; for (int i = n - 1;i >= 1;i--) { if (i % 2 != 0) addedge(arr[i],arr[i + 1]); else addedge(arr[i + 1],arr[i]); while (checkcircuit()) { if ((pt - 1) % 2 != 0) remedge(arr[pt - 1],arr[pt]); else remedge(arr[pt],arr[pt - 1]); pt--; } if (i % 2 != 0) maxr[i] = pt; } //reset for (int i = 1;i <= k;i++) adj[i].clear(); pt = n; //even indices maxr[n] = n; for (int i = n - 1;i >= 1;i--) { if (i % 2 == 0) addedge(arr[i],arr[i + 1]); else addedge(arr[i + 1],arr[i]); while (checkcircuit()) { if ((pt - 1) % 2 == 0) remedge(arr[pt - 1],arr[pt]); else remedge(arr[pt],arr[pt - 1]); pt--; } if (i % 2 == 0) maxr[i] = pt; } while (q--) { int l,r;cin >> l >> r; cout << (maxr[l] >= r ? "YES" : "NO") << '\n'; } } /* Nho doi vai em gay co gai ay ngoi duoi goc pho nen tho ... */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...