解题时间到!!!
2023-08-31 00:40:29
发布于:广东
11阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
long long coupon[2][100001],ci;//0行:时间 1行:钱
int main(){
long long n,sum=0;cin>>n;memset(coupon,-1,sizeof(coupon));
for(int i=1;i<=n;i++){
long long money,time;bool bus;cin>>bus>>money>>time;
if(bus){
bool flag=false;long long maxtime=LLONG_MIN,maxi=-1;
for(long long l=1,r=ci;l<=r;l++,r--){
if(coupon[1][l]>=money&&maxtime<time-coupon[0][l]&&time-coupon[0][l]<=45)maxtime=time-coupon[0][l],maxi=l,flag=true;
if(coupon[1][r]>=money&&maxtime<time-coupon[0][r]&&time-coupon[0][r]<=45)maxtime=time-coupon[0][r],maxi=r,flag=true;
}
if(!flag)sum+=money;
else{
for(int j=maxi;j<ci;j++)coupon[0][j]=coupon[0][j+1],coupon[1][j]=coupon[1][j+1];
coupon[0][ci]=-1,coupon[1][ci]=-1,ci--;
}
}else ci++,coupon[0][ci]=time,coupon[1][ci]=money,sum+=money;
}
cout<<sum;
}
这里空空如也
有帮助,赞一个