usaco barn1

来源:互联网 发布:php三元运算符 编辑:程序博客网 时间:2024/05/16 12:49
#include<stdio.h>
int m,s,c,a[201],b[201],n;
void qs(int l,int r)
{
int i,j,mid,t;
i=l;j=r;mid=b[(l+r)/2];
while (i<j) {
while (b[i]<mid) i++;
while (b[j]>mid) j--;
if (i<=j) {
t=b[i];b[i]=b[j];b[j]=t;
i++;j--;
}
}
if (l<j) qs(l,j);
if (i<r) qs(i,r);
}
void qs1(int l,int r)
{
int i,j,mid,t;
i=l;j=r;mid=a[(l+r)/2];
while (i<j) {
while (a[i]<mid) i++;
while (a[j]>mid) j--;
if (i<=j) {
t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
}
}
if (l<j) qs1(l,j);
if (i<r) qs1(i,r);
}
int main()
{
freopen("barn1.in","r",stdin);
freopen("barn1.out","w",stdout);
scanf("%d%d%d",&m,&s,&c);
int cc=c,i,j,t;
for (i=1;i<=c;i++) scanf("%d",&a[i]);
qs1(1,c);
for (i=1;i<c;i++) {if ((a[i+1]-a[i])>1)b[++n]=a[i+1]-a[i]-1; else cc--;}
qs(1,n);
int ans=c;
for (i=1;i<=cc-m;i++) ans+=b[i];
printf("%d\n",ans);
// for (i=1;i<=n;i++) printf("%d ",b[i]);
return 0;
}
1 0
原创粉丝点击