Submission #1202531

#TimeUsernameProblemLanguageResultExecution timeMemory
1202531raul2008487September (APIO24_september)C++20
0 / 100
1 ms2888 KiB
#include<bits/stdc++.h> #include "september.h" #define ll int #define pb push_back #define in insert #define fi first #define se second #define vl vector<ll> #define all(v) v.begin(), v.end() #define endl '\n' using namespace std; const int sz = 1e5 + 5; vl e[sz]; ll pos[sz], deg[sz], fr[sz], cnt, n, m; void relax(ll node){ for(auto to: e[node]){ relax(to); pos[node] = max(pos[node], pos[to]); } } void add(ll x){ if(!fr[x]){cnt ++;} fr[x] ++; if(fr[x] == m){cnt --;} } void init(ll n){ for(int i = 0; i <= n; i++){ e[i].clear(); deg[i] = fr[i] = 0; } cnt = 0; } int solve(int N, int M, vector<int> F, vector<vector<int>> S) { int i, j, ans = 0, bar = 0; n = N, m = M; vector<ll> deg(n + 1, 0); init(n); for(i = 1; i < n; i++){ deg[F[i] + 1] ++; e[F[i] + 1].pb(i + 1); } for(i = 0; i < n - 1; i++){ pos[S[0][i] + 1] = i + 1; } relax(1); for(i = 0; i < n - 1; i++){ for(j = 0; j < m; j++){ add(S[j][i] + 1); } bar = max(bar, pos[S[0][i] + 1]); if((!cnt) && (bar <= i)){ 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...