USACO Section 1.2 : Milking Cows

# include  < stdio.h >
long  begin[ 5001 ],end[ 5001 ];
long  maxw = 0 ,maxf = 0 ;
long  lastend;

long  max ( long  x, long  y)
{
   
if  (x > y)  return  (x);
   
else   return  (y);
}

long  qsort ( long  lx, long  rx)
{
   
long  i,j,tb,te;
   i
= lx;
   j
= rx;
   tb
= begin[lx];
   te
= end[lx];
   
do
   {
      
while  ((begin[j] > tb) && (j > i))
         j
-- ;
      
if  (i < j)
      {
         begin[i]
= begin[j];
         end[i]
= end[j];
         i
++ ;
         }
      
while  ((begin[i] < tb) && (j > i))
         i
++ ;
      
if  (i < j)
      {
         begin[j]
= begin[i];
         end[j]
= end[i];
         j
-- ;
         }
      }
while  (i < j);
   begin[i]
= tb;
   end[i]
= te;
   i
++ ;
   j
-- ;
   
if  (j > lx) qsort(lx,j);
   
if  (i < rx) qsort(i,rx);
   
return  ( 0 );
}


main ()
{
   FILE 
* in = fopen( " milk2.in " , " r " );
   FILE 
* out = fopen( " milk2.out " , " w " );
   
long  N;
   
long  i,j;
   fscanf (
in , " %d " , & N);
   
for  (i = 1 ;i <= N;i ++ )
      fscanf (
in , " %d%d " , & begin[i], & end[i]);
   qsort(
1 ,N);

   
for  (i = 1 ;i < N;i ++ )
   {
      
for  (j = i + 1 ;j <= N;j ++ )
         
if  ((end[i] >= begin[j]) && (end[i] <= end[j]))
            end[i]
= end[j];
      }
   
for  (i = 1 ;i <= N;i ++ )
      maxw
= max(maxw,end[i] - begin[i]);
   
for  (i = 2 ;i <= N;i ++ )
   {
      lastend
= 0 ;
      
for  (j = 1 ;j < i;j ++ )
      {
         lastend
= max(lastend,end[j]);
         }
      maxf
= max(maxf,begin[i] - lastend);
      }
   fprintf (
out , " %d %d\n " ,maxw,maxf);
   fclose(
in );
   fclose(
out );
   exit(
0 );
}

转载于:https://www.cnblogs.com/vistach/archive/2009/08/01/1536630.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值