Submission #415367

#TimeUsernameProblemLanguageResultExecution timeMemory
4153672548631Fireworks (APIO16_fireworks)C++17
26 / 100
9 ms9752 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<ll,ll> ii; typedef complex<ld> cp; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<ii> vii; typedef vector<cp> vcp; typedef vector<ld> vld; typedef vector<vi> vvi; typedef vector<vll> vvll; typedef vector<vii> vvii; #define fastIO ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL) #define forw(i,l,r) for( int i = (l) ; i < (r) ; i++ ) #define forb(i,r,l) for( int i = (r) ; i >= (l) ; i-- ) #define log2i(x) (32 - __builtin_clz((x)) - 1) #define log2ll(x) (64 - __builtin_clzll((x)) - 1) #define Pi 3.141592653589793 #define sz(x) (int)x.size() #define mt make_tuple #define mp make_pair #define fi first #define se second #define pb push_back #define pf push_front #define pob pop_back #define pof pop_front #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() const int N = 3e5+7; int n,m; int par[N],pos[N]; ll a[N],b[N],c[N]; priority_queue<int> q[N]; int add(int x, int y) { if(sz(q[x])<sz(q[y])) swap(x,y); while(sz(q[y])) { q[x].push(q[y].top()); q[y].pop(); } a[x]+=a[y]; b[x]+=b[y]; return x; } int main() { fastIO; //freopen("test.inp","r",stdin); //freopen("test.out","w",stdout); cin >> n >> m; forw(i,1,n+m) { cin >> par[i] >> c[i]; pos[i]=i; par[i]--; } forw(i,n,n+m) { q[i].push(c[i]); q[i].push(c[i]); a[i]=1; b[i]=-c[i]; pos[par[i]]=add(pos[par[i]],pos[i]); } forb(i,n-1,1) { while(a[pos[i]]>1) { a[pos[i]]--; b[pos[i]]+=q[pos[i]].top(); q[pos[i]].pop(); } ll x=q[pos[i]].top(); q[pos[i]].pop(); ll y=q[pos[i]].top(); q[pos[i]].pop(); x+=c[i]; y+=c[i]; q[pos[i]].push(x); q[pos[i]].push(y); b[pos[i]]-=c[i]; pos[par[i]]=add(pos[par[i]],pos[i]); } while(a[pos[0]]>0) { a[pos[0]]--; b[pos[0]]+=q[pos[0]].top(); q[pos[0]].pop(); } cout << b[pos[0]]; 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...