QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#748862 | #9580. 插排串联 | hanmx | WA | 0ms | 3864kb | C++17 | 1.1kb | 2024-11-14 21:43:47 | 2024-11-14 21:43:49 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using i64=long long;
using u64=unsigned long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n;
vector<vector<int>> g(n+1);
vector<int> a(n+1);
for(int i=1;i<=n;i++){
int x;
cin>>x;
g[x].push_back(i);
cin>>a[i];
}
multiset<int> s;
auto dfs1=[&](auto dfs1,int x)->void{
if(g[x].size()!=0) s.insert(a[x]);
for(auto y:g[x]){
dfs1(dfs1,y);
}
};
dfs1(dfs1,0);
int f=0;
vector<int> siz(n+1);
auto dfs=[&](auto dfs,int x)->void{
if(!g[x].size()){
siz[x]=a[x];
return;
}
for(auto y:g[x]){
dfs(dfs,y);
siz[x]+=siz[y];
}
if(x==0){
if(siz[x]>2200) f=1;
return;
}
auto u=s.lower_bound(siz[x]);
if(u==s.end()){
f=1;
}
else s.erase(*u);
};
dfs(dfs,0);
if(f) cout<<"NO"<<"\n";
else cout<<"YES"<<"\n";
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3628kb
input:
5 0 500 1 700 1 400 2 100 2 200
output:
YES
result:
ok single line: 'YES'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3860kb
input:
5 0 500 1 700 1 400 2 100 2 300
output:
NO
result:
ok single line: 'NO'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3812kb
input:
4 0 1000 1 800 1 500 2 300
output:
YES
result:
ok single line: 'YES'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3568kb
input:
3 0 1000000000 0 1000000000 0 147483647
output:
NO
result:
ok single line: 'NO'
Test #5:
score: -100
Wrong Answer
time: 0ms
memory: 3864kb
input:
3 0 1000000000 0 1000000000 0 147483648
output:
YES
result:
wrong answer 1st lines differ - expected: 'NO', found: 'YES'