45ptsTLE求助,马蜂良好
查看原帖
45ptsTLE求助,马蜂良好
893544
simple_child楼主2024/9/28 17:44

最烦TLE了,马蜂良好求调

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100000+10;
int n;
bool vehicle[MAXN];
int price[MAXN],t[MAXN];
int ticket=0,pointer=0,tickets_time[MAXN],subway_price[MAXN];
int total=0;
void Cantickets(int i)
{
	pointer++;
	if((tickets_time[pointer]!=-1)&&(t[i]-tickets_time[pointer]<=45)&&(subway_price[pointer]>=price[i])) tickets_time[pointer]=-1;
	else
	{
		if(pointer<ticket) Cantickets(i);
		else total+=price[i];
	}
}
int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
	cin>>n;
	for(int i=0;i<n;++i)
	{
		cin>>vehicle[i]>>price[i]>>t[i];
	}
	for(int i=0;i<n;++i)
	{
		if(!vehicle[i])
		{
			ticket++;
			tickets_time[ticket]=t[i];
			subway_price[ticket]=price[i];
			total+=price[i];
		}
		else
		{
			if(ticket>0) Cantickets(i);
			else total+=price[i];
			pointer=0;
		}
	}
	cout<<total<<endl;
	return 0;
}
2024/9/28 17:44
加载中...