#include<bits/stdc++.h>
using namespace std;
#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)
#define MOD 1000000007
#define MX 100010
int n, st[10], ed[10], jump, mn, mx, arr[10];
bool isPossible(int val)
{
int last = st[arr[0]];
for(int i=1;i<n;i++)
{
if(last+val>ed[arr[i]]) return false;
else if(last+val<st[arr[i]]) last=st[arr[i]];
else last=last+val;
}
return true;
}
int bs(int lo, int hi)
{
int mid;
while(lo<hi)
{
mid = (hi+lo)>>1;
if(isPossible(mid)) lo=mid+1;
else hi=mid;
}
return lo-1;
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
int tc, kk=1;
string s;
char ch;
while(cin>>n && n)
{
mn=1e9, mn=0;
for(int i=0;i<n;i++)
{
cin>>st[i]>>ed[i];
st[i]*=60*60;
mn=min(mn, st[i]);
ed[i]*=60*60;
mx=max(mx, ed[i]);
}
for(int i=0;i<n;i++) arr[i]=i;
int ans = 0;
do{
ans = max(ans, bs(mn, mx));
}while(next_permutation(arr, arr+n));
if(ans%60 > 30) ans=ans/60*60+60;
else ans = ans/60*60;
cout<< "Case "<<kk++<<": "<<ans/3600<<":"<<setfill('0')<<setw(2)<<ans%3600/60<<"\n";
}
return 0;
}
No comments:
Post a Comment