제출 #846880

#제출 시각아이디문제언어결과실행 시간메모리
846880Ahmed57Inside information (BOI21_servers)C++17
50 / 100
466 ms130580 KiB
#include <bits/stdc++.h> using namespace std; int NODES=0; bool seg[40000000];int L[40000000],R[40000000],n; void update(int p, int q, int l, int r, int x) { if(l==r){seg[p]=1;return;} int md = (l+r)/2; seg[p]=1; if(x<=md)R[p]=R[q],L[p]=++NODES,update(L[p],L[q],l,md,x); else L[p]=L[q],R[p]=++NODES,update(R[p],R[q],md+1,r,x); } bool query(int p,int l,int r,int x){ if(l==r){ return seg[p]; } int md=(l+r)/2; if(x<=md)return query(L[p],l,md,x); else return query(R[p],md+1,r,x); } vector<int> v; void iterate(int p,int l,int r){ if(!seg[p])return; if(l==r)v.push_back(l); else{ int md=(l+r)/2; iterate(L[p],l,md); iterate(R[p],md+1,r); } } int pr[125001]; int gs[125001]; void merg(int a,int b){ if(gs[a]>gs[b])swap(a,b); iterate(pr[a],1,n);int tm; for(auto x:v){ tm = ++NODES; update(tm,pr[b],1,n,x); pr[b]=tm; } pr[a]=tm,pr[b]=tm,gs[b]+=gs[a],gs[a]=gs[b]; v.clear(); } int main(){ int q; cin>>n>>q; for(int i = 1;i<=n;i++){ pr[i] = ++NODES , gs[i] = 1; } for(int i = 1;i<=n;i++){ int tm = ++NODES; update(tm,pr[i],1,n,i); pr[i]=tm; } q+=n-1; while(q--){ char c;cin>>c; if(c=='S'){int a,b;cin>>a>>b;merg(a,b);} else{ int a,b;cin>>a>>b; cout<<(query(pr[a],1,n,b)?"yes\n":"no\n"); } } }

컴파일 시 표준 에러 (stderr) 메시지

servers.cpp: In function 'void merg(int, int)':
servers.cpp:41:10: warning: 'tm' may be used uninitialized in this function [-Wmaybe-uninitialized]
   41 |     pr[a]=tm,pr[b]=tm,gs[b]+=gs[a],gs[a]=gs[b];
      |     ~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...