Submission #1201765

#TimeUsernameProblemLanguageResultExecution timeMemory
1201765noopSeptember (APIO24_september)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
  vector<int> g(N,0);
  vector<bool> s(N,0);
  vector<vector<int> > v(M,vector<int>(N));
  unordered_set<int> req;
  int ans=0,t=0,c,p;
  bool flag;
  for (int i=1; i<N; i++){
    g[F[i]]++;
  }
  for (int i=0; i<S[0].size(); i++){
    c=S[0][i];
    if (g[c]){
      t++;
      s[c]=1;
    }
    p=F[c];
    g[p]--;
    if (!g[p] and s[p]){
      t--;
      s[p]=0;
    }
    for (int r=0; r<M; r++){
      v[r][S[r][i]]++;
      req.insert(S[r][i]);
    }
    for (auto it=req.begin(); it!=req.end(); it++){
      flag=1;
      c=*it;
      for (int r=1; r<M; r++){
        if (v[r][c]!=v[0][c]){
          flag=0;
          break;
        }
      }
      if (flag){
        it=req.erase(req.find(c));
      }
    }
    if (!t and req.empty()){
      ans++;
    }
  }
  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...