用简单的模拟: //伟人 E-mail:abigwc@gmail.com QQ:270173053 欢迎交流// #include<stdio.h> int main() { FILE *in,*ou; int MAX=-0x80000000; int n,m,i,time=0,index=0,state[100],flag=0; if((in=fopen("water1.in","r"))==NULL) { printf("Can not open the input file."); exit(0); } if((ou=fopen("water.ou","w"))==NULL) { printf("Can not open the output file."); exit(0); } fscanf(in,"%d%d",&n,&m); for(i=0;i<m;i++) state[i]=0; while(index<n) { for(i=0;i<m;i++) { if(state[i]==0) { fscanf(in,"%d",&state[i]); index++; if(index==n) { flag=1; break; } } } if(flag==1) break; for(i=0;i<m;i++) { state[i]--; } time++; } for(i=0;i<m;i++) { if(MAX<state[i]) MAX=state[i]; } if(MAX>0) time+=MAX; printf("%d",time); fclose(in); fclose(ou); return 0; }