逻辑上应该是对的,但是不知道为什么总是有问题
#include <bits/stdc++.h>
using namespace std;
int n,head,tail,ttl;
struct node
{
int ti,co;
}tic[100005],t;
bool ty,jdg = true;
int main()
{
scanf("%d",&n);
for(int i = 0;i < n;i++)
{
cin >> ty;
scanf("%d%d",&t.co,&t.ti);
if(ty)
{
for(int j = head;j < tail;j++)
{
if(t.ti - tic[j].ti > 45)
{
head++;
continue;
}
if(t.co <= tic[j].co)
{
jdg = false;
tic[j].co = 0;
break;
}
}
if(jdg) ttl += t.co;
}
else
{
tic[tail++] = t;
ttl += t.co;
}
}
printf("%d",ttl);
return 0;
}