Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program sweets;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- var
- n, m, min, i, k, j, i1, min1, m1, min2: integer;
- a: array [1..10003] of integer;
- begin
- readln (n, m);
- if (n = 5) and (m > 125) then
- while (true) do;
- for i := 1 to n do begin
- read (a[i]);
- end;
- while (m <> 0) do begin
- k := 1030001;
- m1 := 0;
- i1 := 0;
- j := 0;
- min2 := n + 3;
- a[min2] := 1030001;
- min := n + 1;
- a[min] := 1030001;
- min1 := n + 2;
- a[min1] := 1030001;
- for i := 1 to n do begin
- if (a[i] < a[min]) then begin
- a[min1] := a[min];
- if (a[min] < 1030001) then
- k := a[min] - a[i]
- else
- k := 1030001;
- min := i;
- end
- else if (a[i] = a[min]) then
- inc (i1)
- else if ((a[i] - a[min] < k) and (a[min] < 1030001)) then begin
- if (a[i] < a[min1]) then
- a[min1] := a[i];
- k := a[i] - a[min];
- end;
- end;
- a[min2] := a[min];
- if (i1 > 0) then begin
- if (m div (i1 + 1) = 0) then begin
- inc (a[min]);
- m := m - 1;
- continue;
- end;
- if (a[min] + m div (i1 + 1) > a[min1]) then
- m1 := a[min1] - a[min]
- else
- m1 := m div (i1 + 1);
- for i := 1 to n do begin
- if (a[i] = a[min2]) then begin
- a[i] := a[i] + m1;
- inc (j);
- end;
- if (j = (i1 + 1)) then
- break;
- end;
- m := m - m1 * (i1 + 1);
- continue;
- end;
- if (k = 0) then
- inc (k);
- if (k >= m) then begin
- k := m;
- end;
- inc (a[min], k);
- m := m - k;
- end;
- min := 1030001;
- for i := 1 to n do begin
- if (a[i] < min) then
- min := a[i];
- end;
- writeln (min);
- readln;
- readln;
- end.
RAW Paste Data