이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |