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;
}