Cod sursa(job #263293)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 20 februarie 2009 09:15:21
Problema Progresii Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.79 kb
var f,g:text;
    a:array[0..100010]of int64;
    v:array[0..100010]of longint;
    n,m,i,r:longint;
    k,l,s,x,st,dr:int64;

begin
assign(f,'progresii.in');
assign(g,'progresii.out');
reset(f);
rewrite(g);
read(f,n,m,k,l);
for i:=1 to n do read(f,v[i]);
for i:=1 to n do
  begin
    a[i]:=(l-v[i]) div m+1;
    inc(s,a[i]);
  end;
s:=k-s;
for i:=1 to n do
  begin
    r:=-1;
    st:=1;
    dr:=m;
    x:=s+a[i];
    while (st<=dr)do
      begin
        k:=st+(dr-st)div 2;
        if ((l-v[i])div k+1<=x)then
          begin
            r:=k;
            dr:=k-1;
          end else st:=k+1;
      end;
    if (r=-1)then break;
    s:=s-((l-v[i]) div r +1)+a[i];
    a[i]:=r;
  end;
if (r=-1)then write(g,r)else
for i:=1 to n do writeln(G,a[i]);
close(f);
close(g);
end.