제출 #151112

#제출 시각아이디문제언어결과실행 시간메모리
151112nekiJob Scheduling (IOI19_job)C++14
24 / 100
219 ms32472 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...