答案来了。这一种多了bool类型的use(d)
#include <bits/stdc++.h>
using namespace std;
struct ti{
int t,pr;
bool use;
}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;
a[m].use=false;
}
else{
int id=-1;
for(int j=m;j>=1;j--){
if(a[j].t<t-45){
break;
}
if(a[j].pr>=p&&!a[j].use){
id=j;
}
}
if(id!=-1){
a[id].use=true;
}
else{
ans+=p;
}
}
}
printf("%d",ans);
}
免费的
#include <bits/stdc++.h>
using namespace std;
struct ti{
int t,pr;
bool use;
}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;
a[m].use=false;
}
else{
int id=-1;
for(int j=m;j>=1;j--){
if(a[j].t<t-45){
break;
}
if(a[j].pr>=p&&!a[j].use){
id=j;
}
}
if(id!=-1){
a[id].use=true;
}
else{
ans+=p;
}
}
}
printf("%d",ans);
}
这里有题库: