USACO 1.3-Barn Repair
/* ID: m1590291 TASK: barn1 LANG: C++ */ #include <iostream> #include <fstream> #include <string.h> #include <algorithm> using namespace std; int main() { int a[205],b[205],M,S,C; ifstream fin("barn1.in"); ofstream fout("barn1.out"); while(fin>>M>>S>>C) { int num=0,total=0; memset(b,0,sizeof(b)); for(int i=0;i<C;i++) fin>>a[i]; sort(a,a+C); for(int i=1;i<C;i++) { if(a[i]-a[i-1]>1){ b[num]=a[i]-a[i-1]-1; num++; } } sort(b,b+num); // 此处有坑!!!如果空隙个数小于木板个数的时候,就要分类讨论!!! if(num>=(M-1)){ for(int i=1;i<M;i++) total+=b[num-i]; } else{ for(int i=1;i<=num;i++) total+=b[num-i]; } fout<<a[C-1]-a[0]-total+1<<endl; } return 0; }