This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "job.h"
#include <vector>
#include <cassert>
#include <algorithm>
#include <queue>
#define vi vector<int>
#define ll long long
#define pii pair<ll, ll>
#define ppi pair<pii, ll>
#define fst first
#define snd second
using namespace std;
int N;
pii A[200001];
vi adj[200001];
inline bool comp(const ppi &l, const ppi &r)
{
return make_pair(l.fst.fst * r.fst.snd, l.snd) < make_pair(r.fst.fst * l.fst.snd, r.snd);
}
priority_queue<ppi, vector<ppi>, decltype(&comp)> pq(comp);
long long scheduling_cost(vi p, vi u, vi d)
{
N = p.size();
ll t = 0, res = 0;
for (int i = 1; i < N; i++) adj[p[i]].push_back(i);
pq.push({{u[0], d[0]}, 0});
while (pq.size())
{
int uu = pq.top().snd; pii vv = pq.top().fst; pq.pop();
t += vv.snd; res += t * vv.fst;
for (const auto &w : adj[uu])
{
pq.push({{u[w], d[w]}, w});
}
}
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |