# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1214374 | guagua0407 | Worst Reporter 4 (JOI21_worst_reporter4) | C++20 | 226 ms | 100204 KiB |
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int ll
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void setIO(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
const int mxn=2e5+5;
vector<int> adj[mxn];
map<int,int> mp[mxn];
vector<int> h(mxn),c(mxn);
void dfs(int v){
for(auto u:adj[v]){
dfs(u);
if(mp[u].size()>mp[v].size()) swap(mp[v],mp[u]);
for(auto x:mp[u]){
mp[v][x.f]+=x.s;
}
}
ll sum=c[v];
while(sum>0){
auto it=mp[v].lower_bound(h[v]);
if(mp[v].empty() or it==mp[v].begin()) break;
it--;
if(sum-(*it).s<0){
mp[v][(*it).f]-=sum;
break;
}
else{
sum-=(*it).s;
mp[v].erase(it);
}
}
mp[v][h[v]]+=c[v];
/*cout<<v<<'\n';
for(auto x:mp[v]){
cout<<x.f<<' '<<x.s<<'\n';
}*/
}
signed main(){_
int n;
cin>>n;
ll sum=0;
for(int i=1;i<=n;i++){
int p;
cin>>p;
if(p<i) adj[p].push_back(i);
cin>>h[i]>>c[i];
sum+=c[i];
}
dfs(1);
for(auto v:mp[1]){
sum-=v.s;
}
cout<<sum<<'\n';
return 0;
}
//maybe its multiset not set
//yeeorz
//diaoborz
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |