AcWing 3492. 负载均衡
原题链接
中等
作者:
哈基咪
,
2021-06-02 15:06:13
,
所有人可见
,
阅读 386
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define x first
#define y second
const int N=200005;
typedef pair<int ,int > PII;
priority_queue<PII, vector<PII> , greater<PII> >q[N];
int w[N];//记录计算机剩余算力
int n,m;
//使用堆来维护每个计算机的算力情况
// PII 存储的是当前任务结束时刻,算力
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>w[i];
int a,b,c,d;
for(int i=0;i<m;i++)
{
cin>>a>>b>>c>>d;
while(q[b].size()&&q[b].top().x<=a)
{
w[b]=w[b]+q[b].top().y;
q[b].pop();
}
if(w[b]<d) cout<<"-1"<<endl;
else
{
PII temp;
temp.x=a+c;
temp.y=d;
q[b].push(temp);
w[b]=w[b]-d;
cout<<w[b]<<endl;
}
}
return 0;
}