0pts求调
查看原帖
0pts求调
1268907
uncle_steve楼主2024/12/28 12:10

rt.

该加的特判都加了,可subtask还是又红又绿的……。

求dalao帮助(壶关),在线等。

CODE:

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node{
	string s;
	int a,b,c,d;
}a[201],b[201],c[201];
int n,tc[501],k=1,tk[501],g=1,f=1,y=1,ans=INT_MAX;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].s;
		scanf("%d:%d--%d:%d",&a[i].a,&a[i].b,&a[i].c,&a[i].d);
	}
	for(int i=1;i<=n;i++){
		string t=a[i].s;
		if(t.substr(0,6)=="Zagreb"){
			b[f].s=t;
			b[f].a=a[i].a,b[f].b=a[i].b,b[f].c=a[i].c,b[f].d=a[i].d;
			f++;
		} 
		else if(t.substr(0,4)=="Graz"){ 
			c[y].s=t;
			c[y].a=a[i].a,c[y].b=a[i].b,c[y].c=a[i].c,c[y].d=a[i].d;
			y++;
		}
	}
	if(f==1||y==1){
		cout<<"NEMOGUCE"<<endl;
		return 0;
	}
	for(int i=1;i<=f-1;i++){
		for(int j=1;j<=y-1;j++){
			if(b[i].c*60+b[i].d>=c[j].a*60+c[j].b&&b[i].c-c[j].a<=12) continue;
			else{
				int sum;
				if(b[i].c-c[j].a>12) sum=c[j].c*60+c[j].d-b[i].a*60-b[i].b+1440;
				else{
					if(c[j].c<=b[i].a) sum=c[j].c*60+c[j].d-b[i].a*60-b[i].b+1440;
					else sum=c[j].c*60+c[j].d-b[i].a*60-b[i].b;
				}
				ans=min(ans,sum);
			}
		}
	}
	ans++;
	cout<<ans/60<<":"<<ans%60<<endl;
	
	return 0;
}
2024/12/28 12:10
加载中...