样例过不去求助
查看原帖
样例过不去求助
177435
警策看取楼主2021/7/1 16:10

rt

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100050
#define MAXM 0

int n;
int trans[MAXN],price[MAXN],times[MAXN];
int ans;
int tail,head;
struct quan{
	int p;//券内价格/时间 
	int t;
	bool used;
}q[MAXN];


int main(){
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>trans[i]>>price[i]>>times[i];
	}
	for(int i=1;i<=n;++i){
		if(!trans[i]){//地铁 
			ans+=price[i];
			//发券 
			tail++;
			q[tail].p=price[i];
			q[tail].t=times[i]+45;//失效时间 
			cout<<tail<<" "<<q[tail].p<<" "<<q[tail].t;
		}else{
			//处理失效券 
			while(head<tail&&q[head].t<times[i]){
				head++;
			}
			//找有用券 
			bool found=0;
			for(int j=head;j<=tail;++j){
				if(q[j].p>=price[i]&&!q[j].used){
					q[j].used=1;
					found=1;
					break;
				}
			}
			//找不到付钱 
			if(!found){
				ans+=price[i];
			}
		}	
	}
	cout<<ans;
	return 0;
}

2021/7/1 16:10
加载中...