Submission #966987

#TimeUsernameProblemLanguageResultExecution timeMemory
966987ttamxAlternating Heights (CCO22_day1problem1)C++17
25 / 25
629 ms13952 KiB
#include<bits/stdc++.h> using namespace std; const int N=3005; int n,k,q; int a[N],p[N],vis[N]; vector<int> adj[N]; bool dfs(int u){ if(vis[u])return vis[u]==1; vis[u]=1; for(auto v:adj[u])if(dfs(v))return true; vis[u]=2; return false; } int main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> k >> q; for(int i=1;i<=n;i++)cin >> a[i]; for(int i=1;i<=n;i++){ int l=i,r=n; while(l<r){ int m=(l+r+1)/2; bool b=false; for(int j=i;j<m;j++){ if(b)adj[a[j]].emplace_back(a[j+1]); else adj[a[j+1]].emplace_back(a[j]); b^=true; } bool ok=true; for(int j=i;j<=m;j++)if(dfs(a[j])){ ok=false; break; } for(int j=i;j<=m;j++){ adj[a[j]].clear(); vis[a[j]]=0; } if(ok)l=m; else r=m-1; } p[i]=l; } while(q--){ int l,r; cin >> l >> r; cout << (p[l]>=r?"YES":"NO") << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...