巧了,我一开始的错误应该跟你差不多
```cpp
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 50;
int n,ans = 0;
struct node {
int pri;
int tim;
bool used;
} sub[maxn];
int front = 1,rear = 0;
int main(){
scanf("%d",&n);
for (int i = 1; i <= n; i++) {
int bos,pri,tim;
scanf("%d%d%d",&bos,&pri,&tim);
if (bos == 0) {
ans += pri;
sub[++rear] = {pri,tim,false};
}
else {
while (rear >= front && tim - sub[front].tim > 45) front++;
bool flag = false;
for (int j = front; j <= rear; j++) {
if (sub[j].pri >= pri && sub[j].used == false) {
flag = true;
sub[j].used = true;
break;
}
}
if (!flag) ans += pri;
}
}
printf("%d",ans);
return 0;
}
```
by liuruiqing @ 2024-04-27 22:40:41
@[liuruiqing](/user/1118614) 所以是哪里出问题了
by Pharaoh_ @ 2024-05-15 14:57:13
应该是 用过的优惠票不能再用了 @[Pharaoh_](/user/1114414)
像我的程序一样,加一个是否用过的 bool 变量
by liuruiqing @ 2024-05-15 21:45:45
@[liuruiqing](/user/1118614) 谢谢
by Pharaoh_ @ 2024-05-15 22:44:43