Submission #13855

#TimeUsernameProblemLanguageResultExecution timeMemory
13855gs14004Company Planning (TOKI14_company)C++14
100 / 100
344 ms14276 KiB
#include <cstdio> #include <vector> #include <algorithm> using namespace std; vector<int> graph[100005]; int n,m; int lim; int solve(int x){ vector<int> ret; for (int i=0; i<graph[x].size(); i++) { ret.push_back(solve(graph[x][i])); } sort(ret.begin(),ret.end()); reverse(ret.begin(),ret.end()); int res = 0; for (int i=0; i<lim && i < ret.size(); i++) { res += ret[i]; } return res + 1; } bool trial(int x){ lim = x; return solve(1) >= m; } int main(){ scanf("%d %d",&n,&m); for (int i=2; i<=n; i++) { int t; scanf("%d",&t); graph[t].push_back(i); } int s = 0, e = n; while (s != e) { int m = (s+e)/2; if(trial(m)) e = m; else s = m+1; } printf("%d",s); }
#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...