top1编程
← 返回题目
题解

【基础】公交换乘

1 条题解

  • 0
    @ 2026-7-29 0:18:19
    #include<bits/stdc++.h>
    using namespace std;
    struct pp{
    	int p;//优惠卷的金额
    	int t;//时间
    	int b;//标记是否使用
    };
    pp q[101000];
    int ans,n,front,rear;//总价格
    int main(){
    	cin>>n;
    	while(n--){
    		int a,b,c;
    		cin>>a>>b>>c;
    		if(a==0){
    			ans+=b;
    			q[rear++]={b,c,0};
    		}else{
    			while(c-q[front].t>45&&front!=rear){
    				front++;//优惠券报废 时间超时
    			}
    			//接下来就是要去找适合的优惠券
    			int flag=0;//标记还没有找到
    			for(int i=front;i<rear;i++){
    				if(q[i].p>=b&&q[i].b!=1){
    					flag=1;
    					q[i].b=1;
    					break;
    				}
    			}
    			if(flag==0){
    				ans+=b;
    			}
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1