제출 #143846

#제출 시각아이디문제언어결과실행 시간메모리
143846SpeedOfMagicJob Scheduling (IOI19_job)C++17
12 / 100
139 ms8172 KiB
#include "job.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//24 3
long long scheduling_cost(vector<int> p, vector<int> u, vector<int> d) {
	int n = p.size();
	ll t = 0;
	for (int i : d)
		t += i;
	
	int out[n];
	memset(out, 0, sizeof out);
	for (int i = 0; i < n; i++)
		if (p[i] != -1)
			out[p[i]]++;
	
	ll ans = 0;
	priority_queue<pair<int, int>> cur;
	for (int i = 0; i < n; i++)
		if (out[i] == 0)
			cur.push({-u[i], i});
	
	while (!cur.empty()) {
		int ind = cur.top().second;
		//cout << ind << " " << t << endl;
		cur.pop();
		ans += u[ind] * t;
		t -= d[ind];
		out[p[ind]]--;
		if (out[p[ind]] == 0)
			cur.push({-u[p[ind]], p[ind]});
	}
	
	return ans;
	
	return 0;
}
#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...