Submission #386039

#TimeUsernameProblemLanguageResultExecution timeMemory
386039MiricaMateiFireworks (APIO16_fireworks)C++14
26 / 100
14 ms16876 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 300005; vector<int>G[MAXN]; priority_queue<int>pq[MAXN]; long long a[MAXN], b[MAXN]; int c[MAXN]; int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 2; i <= n + m; ++i) { int p; scanf("%d%d", &p, &c[i]); G[p].push_back(i); } for (int i = n + 1; i <= n + m; ++i) { pq[i].push(c[i]); pq[i].push(c[i]); a[i] = 1; b[i] = -c[i]; } for (int i = n; i >= 1; --i) { for (auto it:G[i]) { if (pq[i].size() < pq[it].size()) swap(pq[i], pq[it]); while (!pq[it].empty()) { pq[i].push(pq[it].top()); pq[it].pop(); } a[i] += a[it]; b[i] += b[it]; } while (a[i] > 1) { int x = pq[i].top(); a[i]--; b[i] += x; pq[i].pop(); } b[i] -= c[i]; int x1 = pq[i].top(); pq[i].pop(); int x0 = pq[i].top(); pq[i].pop(); x1 += c[i]; x0 += c[i]; pq[i].push(x0); pq[i].push(x1); } while (a[1] > 0) { int x = pq[1].top(); a[1]--; b[1] += x; pq[1].pop(); } printf("%lld\n", b[1]); return 0; }

Compilation message (stderr)

fireworks.cpp: In function 'int main()':
fireworks.cpp:15:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   15 |   scanf("%d%d", &n, &m);
      |   ~~~~~^~~~~~~~~~~~~~~~
fireworks.cpp:18:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   18 |     scanf("%d%d", &p, &c[i]);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...