答案来了。可能会超时
#include <bits/stdc++.h>
using namespace std;
struct ti{
int t,pr;
}a[110000];
int n,m,ans;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int g,p,t;
scanf("%d%d%d",&g,&p,&t);
if(g==0){
ans+=p;
m+=1;
a[m].t=t;
a[m].pr=p;
}
else{
int id=-1;
for(int j=1;j<=m;j++){
if(a[j].t>=t-45&&a[j].pr>=p){
id=j;
break;
}
}
if(id!=-1){
for(int j=id;j<m;j++){
a[j]=a[j+1];
}
m-=1;
}
else{
ans+=p;
}
}
}
printf("%d",ans);
}
免费的
#include <bits/stdc++.h>
using namespace std;
struct ti{
int t,pr;
}a[110000];
int n,m,ans;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int g,p,t;
scanf("%d%d%d",&g,&p,&t);
if(g==0){
ans+=p;
m+=1;
a[m].t=t;
a[m].pr=p;
}
else{
int id=-1;
for(int j=1;j<=m;j++){
if(a[j].t>=t-45&&a[j].pr>=p){
id=j;
break;
}
}
if(id!=-1){
for(int j=id;j<m;j++){
a[j]=a[j+1];
}
m-=1;
}
else{
ans+=p;
}
}
}
printf("%d",ans);
}