题目描述
模拟题
C++ 代码
#include <queue>
#include <iostream>
using namespace std;
#define x first
#define y second
typedef pair<int,int>PII;
const int N = 2e5 + 10;
int n,m;
int v[N];
priority_queue<PII,vector<PII>,greater<PII>>heap[N];
int main()
{
cin>>n>>m;
for(int i = 1;i <= n;i ++) cin>>v[i]; //表示第i台计算机还剩多少算力
for(int i = 1;i <= m;i ++)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
while(heap[b].size() && heap[b].top().x <= a)
{//可以画一个数轴 进行一个任务时 看看前面的任务是否已经进行完 进行完了就返回算力
v[b] += heap[b].top().y;
heap[b].pop();
}
if(v[b] < d) cout<<-1<<endl;
else
{
heap[b].push({a + c,d});
v[b] -= d;
cout<<v[b]<<endl;
}
}
}