program bouquet;
type elenco = array [0..100000] of Longint;
var N,J,i : Longint;
F : elenco;
Procedure scambia (var a,b: longint);
var x:longint;
begin
x:=a;
a:=b;
b:=x;
end;
Procedure ordinamento (estremoi,estremos: longint; var v : elenco; ordinato:boolean);
var inf, sup, medio:longint;
pivot :longint;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
end;
function componi (N:Longint; J:Longint; F: array of Longint) : longint;
var minimo, massimo,i, somma, ultimo : Longint;
uguali : boolean;
diff : array [0..100000] of Longint;
begin
massimo:=F[N-1]; minimo:=F[0]; uguali:=true;
for i:=1 to N-1 do if F[i]<>F[0] then uguali:=false;
somma:=MAXLONGINT;
if J=0 then componi:=minimo
else
begin
if uguali=true then componi:=minimo + J div N
else
begin
ultimo:=N-1;
while somma>J do
begin
somma:=0;
for i:=0 to N-1 do begin diff[i]:=massimo-F[i]; somma:=somma+diff[i]; end;
massimo:=massimo-1;
end;
if somma<=J then componi:=(massimo+1)+(J-somma) div N;
end;
end;
end;
begin
readln(N,J);
for i:=0 to N-1 do read(F[i]); readln;
ordinamento(0,N-1,F,true);
writeln(componi(N,J,F));
end.
cHJvZ3JhbSBib3VxdWV0Owp0eXBlIGVsZW5jbyA9IGFycmF5IFswLi4xMDAwMDBdIG9mIExvbmdpbnQ7CnZhciBOLEosaSA6IExvbmdpbnQ7CiAgICBGIDogZWxlbmNvOwoKUHJvY2VkdXJlIHNjYW1iaWEgKHZhciBhLGI6IGxvbmdpbnQpOwp2YXIgeDpsb25naW50OwpiZWdpbgogICB4Oj1hOwogICBhOj1iOwogICBiOj14OwplbmQ7ICAKUHJvY2VkdXJlIG9yZGluYW1lbnRvIChlc3RyZW1vaSxlc3RyZW1vczogbG9uZ2ludDsgdmFyIHYgOiBlbGVuY287IG9yZGluYXRvOmJvb2xlYW4pOwp2YXIgaW5mLCBzdXAsIG1lZGlvOmxvbmdpbnQ7CiAgICBwaXZvdCA6bG9uZ2ludDsKYmVnaW4KICAgIGluZjo9ZXN0cmVtb2k7CiAgICBzdXA6PWVzdHJlbW9zOwogICAgbWVkaW86PSAoZXN0cmVtb2krZXN0cmVtb3MpIGRpdiAyOwogICAgcGl2b3Q6PXZbbWVkaW9dOwogICAgcmVwZWF0CiAgICAgIGlmIChvcmRpbmF0bykgdGhlbgogICAgICAgICBiZWdpbgogICAgICAgICAgICB3aGlsZSAodltpbmZdPHBpdm90KSBkbyAgaW5mOj1pbmYrMTsKICAgICAgICAgICAgd2hpbGUgKHZbc3VwXT5waXZvdCkgZG8gIHN1cDo9c3VwLTE7CiAgICAgICAgIGVuZDsKICAgICAgaWYgaW5mPD1zdXAgdGhlbgogICAgICAgYmVnaW4KICAgICAgICAgc2NhbWJpYSh2W2luZl0sdltzdXBdKTsKICAgICAgICAgaW5mOj1pbmYrMTsKICAgICAgICAgc3VwOj1zdXAtMTsKICAgICAgIGVuZDsKICAgIHVudGlsIGluZj5zdXA7CiAgICBpZiAoZXN0cmVtb2k8c3VwKSB0aGVuIG9yZGluYW1lbnRvKGVzdHJlbW9pLHN1cCx2LG9yZGluYXRvKTsKICAgIGlmIChpbmY8ZXN0cmVtb3MpIHRoZW4gb3JkaW5hbWVudG8oaW5mLGVzdHJlbW9zLHYsb3JkaW5hdG8pOwplbmQ7ICAgCgpmdW5jdGlvbiBjb21wb25pIChOOkxvbmdpbnQ7IEo6TG9uZ2ludDsgRjogYXJyYXkgb2YgTG9uZ2ludCkgOiBsb25naW50OyAKdmFyIG1pbmltbywgbWFzc2ltbyxpLCBzb21tYSwgdWx0aW1vIDogTG9uZ2ludDsKICAgIHVndWFsaSA6IGJvb2xlYW47CiAgICBkaWZmIDogYXJyYXkgWzAuLjEwMDAwMF0gb2YgTG9uZ2ludDsKYmVnaW4KICAgbWFzc2ltbzo9RltOLTFdOyBtaW5pbW86PUZbMF07IHVndWFsaTo9dHJ1ZTsgCiAgIGZvciBpOj0xIHRvIE4tMSBkbyAgaWYgRltpXTw+RlswXSB0aGVuIHVndWFsaTo9ZmFsc2U7CiAgIHNvbW1hOj1NQVhMT05HSU5UOwoJaWYgSj0wIHRoZW4gY29tcG9uaTo9bWluaW1vCiAgICAgICAgIGVsc2UKICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgIGlmIHVndWFsaT10cnVlIHRoZW4gY29tcG9uaTo9bWluaW1vICsgSiBkaXYgTgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsdGltbzo9Ti0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBzb21tYT5KIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tbWE6PTA7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaTo9MCB0byBOLTEgZG8gYmVnaW4gZGlmZltpXTo9bWFzc2ltby1GW2ldOyBzb21tYTo9c29tbWErZGlmZltpXTsgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNzaW1vOj1tYXNzaW1vLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzb21tYTw9SiB0aGVuIGNvbXBvbmk6PShtYXNzaW1vKzEpKyhKLXNvbW1hKSBkaXYgTjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICBlbmQ7CiBlbmQ7ICAgICAgICAgIAoJICAgICAgICAgICAgICAgICAKCSAgICAgICAgICAgICAgICAgCmJlZ2luCglyZWFkbG4oTixKKTsKCWZvciBpOj0wIHRvIE4tMSBkbyByZWFkKEZbaV0pOyAgcmVhZGxuOwoJIG9yZGluYW1lbnRvKDAsTi0xLEYsdHJ1ZSk7Cgl3cml0ZWxuKGNvbXBvbmkoTixKLEYpKTsKZW5kLg==