队列开2e5+5会超
但开小会RE
代码如下
#include<iostream>
#include<queue>
using namespace std;
const int MAXN=2e5+5;
struct node{
int time,num;
};
int n,m;
int v[MAXN];
queue<node> q[MAXN];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>v[i];
while(m--){
int a,b,c,d;
cin>>a>>b>>c>>d;
while(!q[b].empty())
if(q[b].front().time<=a){
v[b]+=q[b].front().num;
q[b].pop();
}
else break;
if(v[b]<d) cout<<-1<<endl;
else{
v[b]-=d;
cout<<v[b]<<endl;
q[b].push((node){a+c,d});
}
}
return 0;
}