开o2,70分。
不开o2,35分。
//会TLE
#include<bits/stdc++.h>
using namespace std;
struct node{
int lx,jg,sj;//lx类型,jg价格,sj时间。
}a[100010];
struct qst{
int qs,cs,ny;//qs钱数,cs时间,ny是否用过。
}b[100010];
int main (){
int n,k=0,ans=0,lo=0;//k,b数组的下标,ans总钱数,lo是否免费(0不免费,1免费);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].lx>>a[i].jg>>a[i].sj;//输入
if(a[i].lx==0){//0时是地铁
k++;//第k张优惠券
b[k].qs=a[i].jg;//存优惠券
b[k].cs=a[i].sj;//存优惠券
b[k].ny=1;//存优惠券
}else if(a[i].lx==1){//1时是公交车
for(int j=1;j<=k;j++){
if((b[j].qs>=a[i].jg)/*比钱数*/&&(a[i].sj-b[j].cs<=45)/*看时间*/&&(b[j].ny==1)/*是否用过第j张优惠券*/){
lo=1;//免费
b[j].ny=0;//去掉这张优惠券
break;
}
}
}
//cout<<lo<<" ";
if(lo==1){//免费
lo=0;
}else if(lo==0){//不免费
ans=ans+a[i].jg;
}
//cout<<ans<<" "<<k<<"\n";
}
cout<<ans;//输出总钱数
return 0;
}