Submission #256861

#TimeUsernameProblemLanguageResultExecution timeMemory
256861GoolakhFireworks (APIO16_fireworks)C++17
100 / 100
241 ms66296 KiB
// FUCKED UP FUCKED UP FUCKED UP FUCKED UP FUCKED UP #include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O2,no-stack-protector,unroll-loops,fast-math") #define F first #define S second #define pb push_back #define SZ(x) (ll)(x.size()) #define all(x) x.begin(),x.end() #define MP make_pair typedef long long ll; typedef long double ld; typedef pair<ll,ll> pll; //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const ll maxn=3e5+10, maxm=5e4+10, lg=21, mod=998244353, inf=1e18; #define pq priority_queue<ll> ll n,m,w[maxn],rr; vector<ll> g[maxn]; pq dff(ll v=0){ pq q; if(v<n){ for(auto u:g[v]){ pq p=dff(u); if(SZ(q)<SZ(p)) swap(p,q); while(!p.empty()) q.push(p.top()), p.pop(); } for(int i=1;i<SZ(g[v]);i++) q.pop(); ll x=q.top()+w[v]; q.pop(); ll y=q.top()+w[v]; q.pop(); q.push(x), q.push(y); } else q.push(w[v]), q.push(w[v]); return q; } int main(){ ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n>>m; for(int i=1,x;i<n+m;i++){ cin>>x>>w[i]; rr+=w[i]; g[--x].pb(i); } pq q=dff(); ll p=q.top(); q.pop(); ll tt=0; while(!q.empty()) rr-=tt++*(p-q.top()), p=q.top(), q.pop(); cout<<rr-tt*p; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...