USACO Section 1.3 : Barn Repair

本文介绍了一种快速排序算法,并通过一个具体的程序示例展示了如何使用该算法来处理一组数据,实现对数据的有效管理和利用。文章详细解释了快速排序的过程,并通过实际案例说明了其在数据处理中的应用。
# include <stdio.h>
int num[201]={0},f[202]={0};

int qsort (int lx,int rx,int s[201])
{
   
int i,j,t;
   i
=lx,j=rx,t=s[i];
   
do
   {
      
while ((s[j]>t)&&(i<j)) j--;
      
if (i<j)
      {
         s[i]
=s[j];
         i
++;
         }
      
while ((s[i]<t)&&(i<j)) i++;
      
if (i<j)
      {
         s[j]
=s[i];
         j
--;
         }
      }
while (i<j);
   s[i]
=t;
   i
++;
   j
--;
   
if (i<rx) qsort(i,rx,s);
   
if (j>lx) qsort(lx,j,s);
   
return (0);
}

main ()
{
   FILE 
*in=fopen ("barn1.in","r");
   FILE 
*out=fopen("barn1.out","w");
   
int M,S,C;
   
int maxf=0;
   
int i;
   fscanf (
in,"%d%d%d",&M,&S,&C);
   
for (i=1;i<=C;i++)
      fscanf (
in,"%d",&num[i]);
   qsort(
1,C,num);
   
   
for (i=2;i<=C;i++)
      f[i]
=num[i]-num[i-1]-1;
   qsort(
1,C,f);
   
for (i=C;i>C-M+1;i--)
      maxf
+=f[i];
   maxf
+=num[1]-1;
   maxf
+=S-num[C];
   fprintf (
out,"%d\n",S-maxf);
   fclose(
in);
   fclose(
out);
   exit(
0);
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值