end;
until tf=true; writeln(h);
close(input);close(output); end. 或const
inf='water.in'; ouf='water.out'; var
n,m,i,j,k,tot,min,max:longint; a:array[1..10000] of longint; b:array[1..100] of longint; begin
assign(input,inf);reset(input); assign(output,ouf);rewrite(output); readln(n,m);
for i:=1 to n do a[i]:=0; for i:=1 to n do read(a[i]); for i:=1 to m do b[i]:=a[i];
min:=maxlongint; max:=-maxlongint;
if n=m then//如果水管数和人数相等,那么直接输出节水量的最大值就行了 begin
for i:=1 to m do
if b[i]>max then max:=b[i]; writeln(max);
close(input);close(output); halt; end;
for i:=m+1 to n do begin
min:=maxlongint; for j:=1 to m do if b[j] min:=b[j]; k:=j;//找接水量最小的水管,并记录该水管的位置 end; b[k]:=b[k]+a[i];//该水管的接水量+下一个人的接水量 end; max:=-maxlongint; for i:=1 to m do if b[i]>max then max:=b[i];//搜一遍,找接水量的最大值 writeln(max); close(input);close(output); end. 输入10 4 4 37 71 16 28 34 28 87 39 43 输出 124 输入100 20 76 26 67 21 73 19 66 23 46 57 63 8 58 65 94 65 96 1 98 52 92 36 28 7 67 94 92 76 85 38 54 88 28 33 33 55 4 94 66 28 69 86 67 98 36 14 94 27 41 59 79 96 96 29 100 52 11 27 60 87 56 54 66 38 52 87 100 82 46 70 52 34 52 65 78 74 35 94 29 84 77 40 86 19 24 79 42 6 32 53 44 85 61 31 99 64 74 61 81 81 输出 331 模拟法 Var a:array[1..10000] of integer; N,mI,j,k:longint; Begin Assign(input,’water.in’);reset(input); Assign(output,’water.out’);rewrite(output); Readln(n,m); For i:=1 to n do Read(a[i]); For i:=m+1 to n do Begin K:=1; For j:=1 to m do If a[j] For i:=1 to m do If a[i]>a[k] then k:=I; Writeln(a[k]); Close(input); Close(output); End.