Submission #524191

#TimeUsernameProblemLanguageResultExecution timeMemory
524191keertanRegions (IOI09_regions)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; //#define int int64_t #define rep(Begin,End) for (Begin=0;Begin<(End);Begin++) #define all(x) x.begin(), x.end() #define all1(x) x.rbegin(), x.rend() #define sz(x) (int32_t)(x.size()) const int N = 3e5+4, mod =998244353; const int64_t N1=1e18; const double eps=1e-6,cmp=1e-3; int tin[N],tout[N],c[N]; int tmr=1; vector<int> adj[N]; vector<int> ctin[N],ctout[N],col[25001]; map<pair<int,int>,int> mp; int euler[N]; void dfs(int u){ tin[u]=tmr; euler[tmr]=c[u]; //cerr<<u<< " "<<c[u]<<"\n"; ctin[c[u]].push_back(tmr++); col[c[u]].push_back(u); for (const int& it:adj[u]){ dfs(it); } tout[u]=tmr++; ctout[c[u]].push_back(tout[u]); } int child(int p,int chld){ int ans=0; //cerr<<"chld"; for (const int& it:col[chld]){ //cerr<<it<<" "; ans+=lower_bound(all(ctin[p]),tin[it])-ctin[p].begin(); ans-=upper_bound(all(ctout[p]),tin[it])-ctout[p].begin(); } return ans; } int parent(int p,int chld){ int ans=0; //cerr<<"gh"; //cout<<tin[1]<<" "<<tout[1]<<"\n"; for (const int& it:col[p]){ ans+=upper_bound(all(ctin[chld]),tout[it])-ctin[chld].begin(); ans-=upper_bound(all(ctin[chld]),tin[it])-ctin[chld].begin(); } return ans; } void solve(){ int n,r,q; cin>>n>>r>>q; cin>>c[1]; for (int i=2,x,p;i<=n;i++){ cin>>p>>x; c[i]=x; adj[p].push_back(i); } dfs(1); for (int i=1;i<=r;i++){ if (sz(col[i])>=400){ vector<int> ok(tmr+1); for (const int& it:col[i]){ ok[tin[it]]++; ok[tout[it]]--; } for (int j=1;j<tmr;j++){ ok[j]+=ok[j-1]; if (euler[j]){ mp[{i,euler[j]}]+=ok[j]-!!(euler[j]==i); } } } } for (int r,r1;q;q--){ cin>>r>>r1; if (sz(col[r])>=512){cout<<mp[{r,r1}]<<endl;continue;} else{ int ans=0; //cerr<<"gh"; //cout<<tin[1]<<" "<<tout[1]<<"\n"; int ans=0; for (const int& it:col[r]){ ans+=upper_bound(all(ctin[r1]),tout[it])-ctin[r1].begin(); ans-=upper_bound(all(ctin[r1]),tin[it])-ctin[r1].begin(); } cout<<ans<<endl; } } } int32_t main(){ ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr); int tq = 1; //cin>>tq; for (;tq;tq--){solve();} }

Compilation message (stderr)

regions.cpp: In function 'void solve()':
regions.cpp:83:7: error: redeclaration of 'int ans'
   83 |   int ans=0;
      |       ^~~
regions.cpp:80:11: note: 'int ans' previously declared here
   80 |       int ans=0;
      |           ^~~