Submission #1292096

#TimeUsernameProblemLanguageResultExecution timeMemory
1292096Hamed_GhaffariSeptember (APIO24_september)C++20
100 / 100
102 ms10984 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; const int MXN = 1e5 + 5; vector<int> g[MXN]; int cnt[MXN]; bool mark[MXN]; int solve(int N, int M, vector<int> F, vector<vector<int>> S) { for(int i=0; i<N; i++) g[i].clear(), cnt[i] = 0, mark[i] = 0; for(int i=1; i<N; i++) g[F[i]].push_back(i); int ans=0, dad=0, nt=0; auto add = [&](int v) { if(cnt[v]==0) nt++; cnt[v]++; if(cnt[v]==M) nt--; if(mark[v]) return; if(v && mark[F[v]]) dad--; mark[v] = 1; for(int u : g[v]) if(!mark[u]) dad++; }; for(int l=0; l<N-1;) { ans++; for(int i=0; i<M; i++) add(S[i][l]); int r=l; while(nt || dad) { r++; for(int i=0; i<M; i++) add(S[i][r]); } l = r+1; } return ans; }
#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...