Submission #1214374

#TimeUsernameProblemLanguageResultExecution timeMemory
1214374guagua0407Worst Reporter 4 (JOI21_worst_reporter4)C++20
79 / 100
226 ms100204 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)

worst_reporter2.cpp: In function 'void setIO(std::string)':
worst_reporter2.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
worst_reporter2.cpp:17:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...