Submission #1148366

#TimeUsernameProblemLanguageResultExecution timeMemory
1148366Muhammad_AneeqTeam Coding (EGOI24_teamcoding)C++20
62 / 100
4094 ms31300 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <map> #include <algorithm> #include <vector> #warning check the output using namespace std; int const N=1e5+10; vector<int>nei[N]={}; vector<int>lv[N]={}; map<int,vector<int>>co[N]={}; int it[N],ot[N]; int c[N]={}; int tm=0; void dfs(int u,int h=0) { co[c[u]][h].push_back(u); it[u]=tm++; lv[h].push_back(it[u]); for(auto i:nei[u]) dfs(i,h+1); ot[u]=tm-1; } int fn(int u,int lev) { int z=lower_bound(begin(lv[lev]),end(lv[lev]),it[u])-begin(lv[lev]); int y=upper_bound(begin(lv[lev]),end(lv[lev]),ot[u])-begin(lv[lev]); return y-z; } pair<int,int> check(int k,int u) { int ans=0,mx=0; for (auto [i,inds]:co[k]) { int sz=fn(u,i); sz=min(sz,int(inds.size())); int f=0; for (auto j:inds) f+=(it[j]>=it[u]&&it[j]<=ot[u]); ans+=sz; mx+=sz-f; } return {ans,mx}; } inline void solve() { int n,k; cin>>n>>k; for (int i=0;i<n;i++) cin>>c[i]; int pra; bool subt1=1; for (int i=1;i<n;i++) { cin>>pra; if (pra!=i-1) subt1=0; nei[pra].push_back(i); } if (subt1) { map<int,int>cnt; int mx=1; for (int i=n-1;i>=0;i--) { cnt[c[i]]++; mx=max(mx,cnt[c[i]]); } cout<<mx<<' '<<0<<endl;return; } if (k==1) { cout<<n<<' '<<0<<endl;return; } dfs(0); int ans=1,mx=0; for (int i=0;i<n;i++) { pair<int,int>g=check(c[i],i); if (ans<g.first) { ans=g.first; mx=g.second; } if (g.first==ans) mx=min(mx,g.second); } cout<<ans<<' '<<mx<<endl; } int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t=1; for (int i=1;i<=t;i++) { solve(); } }

Compilation message (stderr)

Main.cpp:11:2: warning: #warning check the output [-Wcpp]
   11 | #warning check the output
      |  ^~~~~~~
#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...