1
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<map>
#include<math.h>
using namespace std;
struct node
{
int x,y;
};
node a[10];
int s[10],c[10];
int n;
bool check1(double mid)
{
double k=a[c[1]].x;
for(int i=2;i<=n;i++)
{
k=k+mid;
if(k>a[c[i]].y)
return false;
if(k<a[c[i]].x)
k=a[c[i]].x;
}
return true;
}
bool check(double mid)
{
for(int i=1;i<=n;i++)
c[i]=i;
for(int i=1;i<=s[n];i++)
{
if(check1(mid))
return true;
next_permutation(c+1,c+n+1);
}
return false;
}
int main()
{
int cnt=0;
s[1]=1;
for(int i=2;i<=10;i++)
s[i]=s[i-1]*i;
while(scanf("%d",&n),n!=0)
{
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
double l=0,r=1500;
while(l+1e-5<r)
{
double mid=(l+r)/2;
if(check(mid))
l=mid;
else
r=mid;
}
int s=(int)l,t=(int)((l-s)*60+0.5);
if(t==60)
{
t=0;
s++;
}
printf("Case %d: %d:",++cnt,s);
if(t<10)
printf("0%d\n",t);
else
printf("%d\n",t);
}
return 0;
}
2
#include<iostream>
#include<string>
#include<string.h>
#include<stdlib.h>
using namespace std;
struct dat_edge
{
int aim,last;
}edge[201];
int n,m,k,inde[101],coun[101],tmp_coun[101],pl[101],len_edge,num_key,key[300][101];
char kind[101];
void insert_edge(int x,int y)
{
len_edge++