Submission #1173394

#TimeUsernameProblemLanguageResultExecution timeMemory
1173394adkjtJob Scheduling (IOI19_job)C++20
12 / 100
64 ms8128 KiB
#include "job.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std;
#define pii pair<pair<int,int>,int>
#define f first
#define s second
#define ll long long
int out[222222];
priority_queue<pii> pq;
long long scheduling_cost(std::vector<int> p, std::vector<int> u, std::vector<int> d) {
    ll timesum=d[0];
    int n=p.size();
    for(int i=1;i<n;i++)
    {
        out[p[i]]++;
        timesum+=d[i];
    }
    ll ans=0;
    for(int i=0;i<n;i++)
    {
        ans+=u[i]*d[i];
        if(out[i]==0)
        {
            pq.push({{-u[i],d[i]},i});
        }
    }
    while(!pq.empty())
    {
        pii now=pq.top();
        pq.pop();

        ans+=(-now.f.f)*(timesum-now.f.s);
        timesum-=now.f.s;
        if(now.s==0) break;
        out[p[now.s]]--;
        if(out[p[now.s]]==0) pq.push({{-u[p[now.s]],d[p[now.s]]},p[now.s]});
    }

	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...