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 <bits/stdc++.h>
using namespace std;
#define maxn 200100
#define loop(i, a, b ) for(int i=a;i<b;i++)
typedef long long ll;
struct temp{
ll a, t, sa;vector<ll> chs;
bool operator<(const temp &dr) const {
return sa*dr.t<dr.sa*t;
}
};
temp ts[maxn];
ll scheduling_cost(vector<int> p, vector<int> a, vector<int> t) {
ll n=p.size();
loop(i,0, n) ts[i].a=a[i], ts[i].t=t[i], ts[i].sa=ts[i].a;
loop(i, 0, n) if(p[i]!=-1) ts[p[i]].sa+=ts[i].sa, ts[p[i]].chs.push_back(i);
priority_queue<temp> pq;pq.push(ts[0]);
ll ct=0, ans=0;
while(pq.size()){
auto v=pq.top();pq.pop();
ct+=v.t;
ans+=ct * v.a;
for(auto&& i: v.chs) pq.push(ts[i]);
}
return ans;
}
# | 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... |