Submission #1162477

#TimeUsernameProblemLanguageResultExecution timeMemory
1162477nninSeptember (APIO24_september)C++17
100 / 100
147 ms16348 KiB
#include "september.h" #include<bits/stdc++.h> using namespace std; #define pii pair<int,int> int posi[100005]; vector<int> adj[100005]; void dfs(int u) { for(int v:adj[u]) { dfs(v); posi[u] = max(posi[u], posi[v]); } } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { adj[0].clear(); for(int i=1;i<N;i++) { posi[i] = 1e9; adj[i].clear(); } for(int i=0;i<M;i++) for(int j=0;j<N-1;j++) { posi[S[i][j]] = min(posi[S[i][j]], j); } vector<pii> ord; for(int i=1;i<N;i++) { ord.push_back({posi[i], i}); adj[F[i]].push_back(i); } sort(ord.begin(), ord.end()); for(int i=0;i<M;i++) for(int j=0;j<N-1;j++) { posi[S[i][j]] = max(posi[S[i][j]], j); } dfs(0); int day = 0, cur = -1; for(auto [p, u]:ord) { if(p>cur) day++; cur = max(cur, posi[u]); } return day; }
#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...