Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
27823 | 沈仲恩 | 【S】T1最大后缀值个数 | C++ | 运行超时 | 10 | 1000 MS | 17852 KB | 784 | 2024-03-31 09:28:37 |
#include <bits/stdc++.h> #define int long long #define pii pair<int, int> #define mkp make_pair using namespace std; int n, fa[1000005], mx[1000005], val[1000005], res[1000005]; bool hs[1000005], chain = 1; signed main() { scanf("%lld", &n); for (int i = 2; i <= n; i++) { scanf("%lld", &fa[i]); hs[fa[i]] = 1; if (fa[i] != i - 1) chain = 0; } for (int i = 1; i <= n; i++) scanf("%lld", &val[i]); if (chain) { ; } for (int i = 1; i <= n; i++) { mx[i] = val[i]; res[i]++; for (int j = fa[i]; j; j = fa[j]) if (val[j] >= mx[i]) mx[i] = val[j], res[i]++; printf("%lld ", res[i]); } return 0; }