Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
27848 | 方巾予 | 【S】T2 区间 | C++ | 运行超时 | 0 | 1000 MS | 4152 KB | 976 | 2024-03-31 11:26:18 |
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int n,fa[N],v[N],ans[N],vis[N],ma; bool flag; void dfs(int root,int x,int maxx,int cnt){ return ; } signed main(){ scanf("%d",&n); flag=1; for(int i=2;i<=n;i++){ scanf("%d",&fa[i]); if(fa[i]!=i-1){ flag=0; } } for(int i=1;i<=n;i++){ scanf("%d",&v[i]); } if(flag){ for(int i=1;i<=(n/2);i++){ swap(v[i],v[n-i+1]); } for(int i=1;i<=n;i++){ if(v[i]>=ma){ ma=v[i]; ans[i-1]++; } } for(int i=1;i<=n;i++){ swap(ans[i],ans[n-i+1]); } for(int i=1;i<=n;i++){ ans[i]+=ans[i-1]; } }else{ for(int i=1;i<=n;i++){ dfs(i,i,v[i],0); } } for(int i=1;i<=n;i++){ printf("%d ",ans[i]); } return 0; }