QwQ,样例都没过……注释写好了,走过路过的好人帮帮忙吧……
查看原帖
QwQ,样例都没过……注释写好了,走过路过的好人帮帮忙吧……
935012
Max6700楼主2023/3/24 21:33

如下:我也是醉了

#include<bits/stdc++.h>
using namespace std;

struct gj
{
	int bh;//编号,先进先出(不会队列)
	int sj;//时间,判断优惠
	int cz;//存在,是否存在
	int mn;//价钱,乘坐价钱 
}a[200000],b[200000]; 

long long sum;//总钱数 

int main(){
	
	int n;
	cin>>n;//次数
	
	int gj=1,dt=1;//临时变量:公交编号,地铁编号 
	
	//输入 
	for(int i=1;i<=n;i++) 
	{
		//临时变量:类型,价格,时间 
		int x,y,z;
		cin>>x>>y>>z;
		
		//分类包装 
		if(x==1)
		{
			b[gj].mn=y;
			b[gj].sj=z;
			b[gj].bh=i;
			b[gj].cz=1;
			gj++;
		}
		else if(x==0)
		{
			a[dt].mn=y;
			a[dt].sj=z;
			a[dt].bh=i;
			a[dt].cz=1;
			dt++;
		}
		//总价钱加当前价钱
		sum+=y;		 
	}
	
	//操作
	for(int i=1;i<=n;i++)
	{
		//在当前公交(第i个)前找优惠 
		for(int j=1;j<=b[i].bh;j++)
		{
			//如果当前地铁(第j个)优惠没有被使用 且 没有超过时间 且 公交价格不超过地铁价格 
			if(a[j].cz==1 && b[i].sj-a[j].sj<=45 && b[i].mn<=a[j].mn)
			{
				//减少总钱数,并去除这个优惠,且退出此次寻找 
				sum-=b[i].mn;
				a[j].cz=0;
				break;
			}
		}
				
	} 
	
	cout<<sum; 
	
	return 0;
}
2023/3/24 21:33
加载中...