数组模拟队列解法
2025-08-09 18:52:13
发布于:北京
24阅读
0回复
0点赞
很简单好吧一遍过
#include<bits/stdc++.h>
using namespace std;
struct quan{
int p,t;
} q[100005];//结构体队列
int main(){
int n,a = 1/*头指针*/,b = 1/*尾指针*/;
cin>>n;
int ans = 0;
while(n--){
int x,y,z;
cin>>x>>y>>z;
if(x == 0){//x == 0存优惠票
ans += y;
q[b].p = y;
q[b++].t = z;
}else{//x == 1
while(z - q[a].t > 45 && a < b){
a++;
}//去掉无效票
int flag = true;
//遍历队列找可以使用的优惠票
for(int i = a;i < b;i++){
if(q[i].p >= y){
q[i].p = 0;
flag = false;
break;
}
}
//没找到花钱
if(flag){
ans += y;
}
}
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个