/*
ID:zizz-zi1
LANG:C
TASK:barn1
*/
#include <stdio.h>
int a[200]={0};
void qsort(int l,int r)
{
int t,i=l,j=r,m=a[(l+r)/2];
do{
while(a[i]>m) i++;
while(a[j]<m) j--;
if (i<=j){ /*这里万万不可忘记i<=j的判断!基础基础*/
t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
}
}while(i<=j);
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main(void)
{
FILE *fin,*fout;
fin=fopen("barn1.in","r");
fout=fopen("barn1.out","w");
int ans,n_a,flag=1,left,right,tmp,m,s,c,i,j,barn[201]={0};
fscanf(fin,"%d %d %d\n",&m,&s,&c);
for(i=0;i<c;i++)
{
fscanf(fin,"%d\n",&tmp);
barn[tmp]=1; //1是有牛 0为无
}
for(i=1;i<=s;i++)
if (barn[i]==1) break;
left=i;
for(i=s;i>=1;i--)
if (barn[i]==1) break;
right=i;
ans=right-left+1; //简单去除了左右两边空的情况
n_a=0;
for(i=left;i<=right;i++){ /*flag==1 :有牛(上次) flag==0 : 空*/
if(barn[i]==0)
if(flag==1){
n_a++;
a[n_a]++;
flag=0;
}
else
a[n_a]++;
else
flag=1;
}
qsort(1,n_a);
for(i=1;i<m;i++)
ans-=a[i];
fprintf(fout,"%d\n",ans);
fclose(fin);fclose(fout);
return 0;
}
10-04
10-04