Submission #155702

#TimeUsernameProblemLanguageResultExecution timeMemory
155702MercenaryRegions (IOI09_regions)C++14
0 / 100
67 ms12792 KiB
#include<bits/stdc++.h> #define taskname "UNDRA" #define pb push_back #define mp make_pair using namespace std; typedef long long ll; typedef pair<int,int> ii; const int maxn = 2e5 + 5; const int maxr = 25005; const int sqr = 450 + 5; int bigid[maxr]; int col[maxr]; int n , r , q; vector<int> adj[maxn]; int big[sqr]; int nBig = 0; vector<ii> querysmall[maxr]; int precal[sqr][maxr]; int c[maxn]; int cnt[maxr]; int res[maxn]; void DFS(int u){ if(bigid[c[u]]){ for(int i = 1 ; i <= r ; ++i){ precal[bigid[c[u]]][i] += cnt[i]; } }else{ for(const ii& v : querysmall[c[u]]){ res[v.second] += cnt[v.first]; } } cnt[c[u]]++; for(auto & v : adj[u]){ DFS(v); } cnt[c[u]]--; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); if(fopen(taskname".INP","r")){ freopen(taskname".INP","r",stdin); freopen(taskname".OUT","w",stdout); } cin >> n >> r >> q; for(int p , i = 1 ; i <= n ; ++i){ if(i > 1){ cin >> p >> c[i]; adj[p].pb(i); } else cin >> c[i]; col[c[i]]++; } for(int i = 1 ; i <= r ; ++i){ if(col[i] >= sqr){ bigid[i] = ++nBig; big[nBig] = i; } } for(int r1 , r2, i = 1 ; i <= q ; ++i){ cin >> r1 >> r2; querysmall[r2].pb(mp(r1 , i)); } DFS(1); for(int i = 1 ; i <= nBig ; ++i){ for(auto & v : querysmall[big[i]]){ res[v.second] = precal[i][v.first]; } } for(int i = 1 ; i <= q ; ++i)cout << res[i] << endl; }

Compilation message (stderr)

regions.cpp: In function 'int main()':
regions.cpp:46:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
         freopen(taskname".INP","r",stdin);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
regions.cpp:47:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
         freopen(taskname".OUT","w",stdout);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...