Submission #434054

#TimeUsernameProblemLanguageResultExecution timeMemory
434054amoo_safarWorst Reporter 4 (JOI21_worst_reporter4)C++17
79 / 100
408 ms524292 KiB
// vaziat meshki-ghermeze ! #include <bits/stdc++.h> #define pb push_back #define F first #define S second #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " : " << x << '\n' using namespace std; typedef long long ll; typedef long double ld; typedef string str; typedef pair<ll, ll> pll; const ll Mod = 1000000007LL; const int N = 2e5 + 10; const ll Inf = 2242545357980376863LL; const ll Log = 30; map<int, ll> mp[N]; int a[N], h[N], c[N]; vector<int> G[N]; void DFS(int u){ for(auto adj : G[u]){ if(adj == u) continue; DFS(adj); if(mp[adj].size() > mp[u].size()) mp[u].swap(mp[adj]); for(auto [la, sm] : mp[adj]) mp[u][la] += sm; } ll del = c[u]; while(del){ auto it = mp[u].lower_bound(h[u] + 1); if(it == mp[u].end()) break; ll rm = min(del, it -> S); del -= rm; if(rm < it -> S){ mp[u][it -> F] -= rm; } else mp[u].erase(it); } mp[u][h[u]] += c[u]; // cerr << "!! " << u << " : \n"; // for(auto [x, y] : mp[u]) // cerr << x << ' ' << y << '\n'; // cerr << "------\n"; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i] >> h[i] >> c[i]; G[a[i]].pb(i); h[i] = -h[i]; } DFS(1); ll ans = 0; for(int i = 1; i <= n; i++) ans += c[i]; for(auto [la, sm] : mp[1]) ans -= sm; cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...