/* ID: mytbk921 LANG: C TASK: barn1 */ #include #define MAXS 200 int main() { int MBoards,nStalls,nCows; int l,r,ngaps,occupied; int stalls[MAXS+10]={},gaps[MAXS]; int i,j; FILE *fin=fopen("barn1.in","r"); FILE *fout=fopen("barn1.out","w"); fscanf(fin,"%d%d%d",&MBoards,&nStalls,&nCows); l=nStalls; r=0; //initial the left&right bound for (i=0;ir) r=j; } fclose(fin); ngaps=0; for (i=l;i<=r;i++){ if (!stalls[i]){ //have a gap for (j=i;!stalls[j];j++) ; gaps[ngaps++]=j-i; i=j; //the i will continue } } //selection sort for (i=0;igaps[max]) max=j; } int tmp=gaps[max]; gaps[max]=gaps[i]; gaps[i]=tmp; //swap finished } //calculate occupied=r-l+1; for (i=0;i