样例过了,但0分
查看原帖
样例过了,但0分
633108
leo110801楼主2024/12/28 16:28

求调!!! 半红半绿

#include<bits/stdc++.h>
using namespace std;
//#define int long long
struct node
{
	string s;
	int sh,sm,eh,em;
}a[2005];
struct node1
{
	int s,e;
}b[2005],c[2005];
bool cmp(node1 x,node1 y)
{
	return x.s < y.s;
}
int main()
{
	int n;
	cin>>n;
	bool f1 = 0,f2 = 0;
	int cnt1 = 1,cnt2 = 1;
	int ans = 2000000000;
	for(int i = 1;i <= n;i ++)
	{
		cin>>a[i].s;
		scanf("%d:%d--%d:%d",&a[i].sh,&a[i].sm,&a[i].eh,&a[i].em);
		int st = a[i].sh*60+a[i].sm;
		if(a[i].sh > a[i].eh) a[i].eh += 24;
		else if(a[i].sh == a[i].eh && a[i].sm > a[i].em) a[i].eh += 24; 
		int en = a[i].eh*60+a[i].em;
		if(a[i].s == "Zagreb-Graz")
		{
			b[cnt1].s = st;
			b[cnt1].e = en;
			f1 = 1;
			cnt1++;
		 }
		else
		{
			c[cnt2].s = st;
			c[cnt2].e = en;
			f2 = 1;
			cnt2++;
		}
	}
	if(f1 == 0||f2 == 0)
	{
		cout<<"NEMOGUCE";
		return 0;
	}
	//sort(b+1,b+cnt1,cmp);
	//sort(c+1,c+cnt2,cmp);
	for(int i = 1;i < cnt1;i ++)
	{
		for(int j = 1;j < cnt2;j++)
		{
			//cout<<c[j].e-b[i].s<<endl;
			if(b[i].e >= c[j].s) ans = min(ans,c[j].e+1440-b[i].s+1);
			else ans = min(ans,c[j].e-b[i].s+1) ;
			
		}
	}
	//ans++;
	int ansm = ans%60;
	ans-=ansm;
	int ansh = ans/60;
	if(ansm < 10) cout<<ansh<<":0"<<ansm;
	else cout<<ansh<<":"<<ansm;
 	return 0;
}

2024/12/28 16:28
加载中...