#include <bits/stdc++.h>; using namespace std; int main(){ long n; cin>>n; long a[n][3]; long s=0; long z=0; long j=0; long q=0; long p=-1;//所有票价一样 long b[n][3]; long m=0; long head=0; for(long i=0;i<n;i++){ for(j=0;j<3;j++){ cin>>a[i][j]; b[i][j]=0; //0地铁,1公交;票价;开始时间 q=a[0][1]; if(a[i][1]!=q){ p=0;//票价不一样 } } }
for(long i=0;i<n;i++){
//0地铁,1公交;票价;开始时间 if(a[i][0]==0){ s=s+a[i][1];//地铁收钱 //cout<<s<<"a"<<i<<" "; for(j=0;j<3;j++){ b[m][j]=a[i][j];//记录地铁 } m++; } else{ //十分关键,节约大量时间 while (head < m && a[i][2] > b[head][2] + 45) { head++; } for(j=head;j<=m;j++){
if(p==0&&b[j][0]==0&&a[i][2]<=(b[j][2]+45)&&a[i][1]<=b[j][1])
{
b[j][0]=-1;//使用掉
s=s+0;
// cout<<s<<"b"<<i<<j<<" ";
break;
}
else if(p==-1&&a[i][2]<=(b[j][2]+45)){
b[j][0]=-1;//使用掉
s=s+0;
// cout<<s<<"b"<<i<<j<<" ";
break;
}
}
if(b[j][0]!=-1){
s=s+a[i][1];
// cout<<s<<"c"<<i<<" ";
}
}
}
cout<<s;
}

京公网安备 11010502036488号