模拟队列
2025-10-01 09:24:27
发布于:北京
31阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n;
struct node{
int price,t;
};
node a[100010];
int flag[100010];
int main(){
cin>>n;
int sum=0;
int head=1,tail=1;
while(n--){
int trans,price,t;
cin>>trans>>price>>t;
if(trans==0){
sum+=price;
a[tail++]={price,t};
}
else{
for(int i=head;i<=tail-1;i++){
if(a[i].t<t-45||flag[i]==1) head++;
else break;
}
int ok=0;
for(int i=head;i<=tail-1;i++){
if(flag[i]==0&&a[i].price>=price){
flag[i]=1;
ok=1;
break;
}
}
if(ok==0) sum+=price;
}
}
cout<<sum;
return 0;
}











这里空空如也






有帮助,赞一个