题解 | #公交换乘#

公交换乘

https://ac.nowcoder.com/acm/problem/54632

#include<iostream>
using namespace std;
struct s{
	int num; //0 地铁 
	int p;  //价钱 
	int t;  //乘车时间 
}a[100010];
int main()
{
	int n,p,t;
	long long ans=0;  //花费
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i].num>>a[i].p>>a[i].t;
		ans+=a[i].p;   //先加总价
	}
	for(int i=0;i<n;i++){      //只判断地铁,是否可以优惠45分钟后的公交
		if(a[i].num==0){
			int j=i+1; 
			while(a[j].t-a[i].t<=45&&j<n){  //找最近,满足要求的公交
				if(a[j].num==1&&a[i].p>=a[j].p){
					ans-=a[j].p;        //扣除这个价钱
					a[j].num=2;         //标记为已优惠
					break;
				}j++;
			}
		}
	}
	cout<<ans;
	return 0;
}
全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务