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 <algorithm>
#include <iostream>
#include <queue>
using namespace std;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef long long llong;
struct Temple {
int id;
llong days, cost;
bool operator<(const Temple& t) const {
return days * t.cost > t.days * cost;
}
};
long long scheduling_cost(vector<int> p, vector<int> u, vector<int> d) {
int N = p.size();
VVI tree(N);
for (int i = 1; i < N; ++i)
tree[ p[i] ].push_back(i);
llong T = 0;
llong res = 0;
priority_queue<Temple> pq;
pq.push({0, d[0], u[0]});
while (!pq.empty()) {
Temple t = pq.top();
pq.pop();
T += d[t.id];
res += T * u[t.id];
for (int y : tree[t.id]) {
pq.push({y, d[y], u[y]});
}
}
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... |