Submission #1234361

#TimeUsernameProblemLanguageResultExecution timeMemory
1234361nai0610Winter Driving (CCO19_day1problem3)C++20
0 / 25
2 ms5188 KiB
#include <bits/stdc++.h> #define ll int64_t #define ld long double using namespace std; // const int maxn =2e5+5; const int mod = 1e9+7; // 998244353,1610612741 const ll inf = 1e18; const ld pi = atan(1.0L)*4; int n; ll a[maxn],sz[maxn]; vector<int> g[maxn]; void dfs(int u,int p=-1) { sz[u]=a[u]; for (auto v:g[u]) { if (v!=p) { dfs(v,u); sz[u]+=sz[v]; } } } int main() { // freopen("../input.inp","r",stdin); // freopen("output.out","w",stdout); ios::sync_with_stdio(false); cin.tie(nullptr); clock_t start,end; start=clock(); cin >>n; ll s=0; for (int i=1;i<=n;i++) cin >>a[i],s+=a[i]; for (int i=2;i<=n;i++) { int p; cin >>p; g[p].push_back(i); g[i].push_back(p); } dfs(1); int cnt=0; for (int i=1;i<=n;i++) cnt+=(max(sz[i],s-sz[i])*2<=s); assert(cnt<=2); end=clock(); ld dur=(ld)(end-start)/(ld)(CLOCKS_PER_SEC)*(1000.0L); cerr<<dur<<'\n'; return 0; }
#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...