P5661公交换乘
#include<bits/stdc++.h>
using namespace std;
struct tra{
int t;
int w;
int v;
bool is = 1;
}arr[100001];
bool pd(int n,int i){
if(i == 0)return 0;
int mi = -1;
int j = i-1;
while(arr[i].t - arr[j].t <= 45){
if(arr[i].t - arr[j].t <= 45 && arr[j].is && arr[i].v <= arr[j].v){
mi = j;
}
j--;
}
if(mi == -1)
return 0;
else{
arr[mi].is = 0;
return 1;
}
}
int main(){
//freopen("transfer.in","r",stdin);
//freopen("transfer.out","w",stdout);
int n;
int ans = 0;
cin>>n;
for(int i = 0;i < n;i++){
cin>>arr[i].w>>arr[i].v>>arr[i].t;
if(arr[i].w == 1){
arr[i].is = 0;
if(pd(arr[i].t,i)) continue;
else ans += arr[i].v;
}
else ans+=arr[i].v;
}
cout<<ans<<endl;
return 0;
}
提交了好几遍,有几个RE,一会80一会90的