思路:
有的牛棚住牛,有的是空的,从反过来的思路来想,先用一块木板盖住所有有猪住的猪棚,减去空牛棚数,最终得到最多被木板挡住门的牛棚的数量。
代码展示:
#include<bits/stdc++.h>
using namespace std;
const int N=210;
int m,s,c;int a[N],b[N];int main()
{cin>>m>>s>>c;for(int i=0;i<c;i++)cin>>a[i];sort(a,a+c);int res=a[c-1]-a[0]+1;for(int i=0;i+1<c;i++)b[i]=a[i+1]-a[i]-1;//邻住着牛的牛棚之间的空牛棚数量sort(b,b+c,greater<>());for(int i=0;i<m-1&&i<c-1;i++){res-=b[i];}
cout<<res;
return 0;
}