제출 #432219

#제출 시각아이디문제언어결과실행 시간메모리
432219BertedJob Scheduling (IOI19_job)C++14
24 / 100
195 ms19768 KiB
#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 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...