Pagini recente » Cod sursa (job #1093420) | Cod sursa (job #940647) | Cod sursa (job #225350) | Cod sursa (job #1641117) | Cod sursa (job #163475)
Cod sursa(job #163475)
type prog=record
pozitie:longint;
viteza:longint;
end;
vector=array [1..1000] of prog;
var n,m,k,l,i:longint;
ok:boolean;
v:vector;
f,g:text;
procedure citire(var n,m,k,l:longint;var v:vector);
var i:longint;
begin
readln(f,n,m,k,l);
for i:=1 to n do readln(f,v[i].pozitie);
end;
procedure succ(a,b,l:longint;var c:longint);
var i:longint;
begin
i:=a;
c:=0;
repeat
c:=c+1;
i:=i+b;
until i>l;
end;
procedure suc(v:vector;n,m,k,l:longint;var ok:boolean);
var i,j,c:longint;
begin
i:=0;
j:=0;
ok:=true;
repeat
i:=i+1;
succ(v[i].pozitie,v[i].viteza,l,c);
if c>=k then ok:=false
else begin
j:=j+c;
if j>k then ok:=false;
end;
until (i=n) or (not ok);
end;
begin
assign(f,'progresii.in');
assign(g,'progresii.out');
reset(f);
rewrite(g);
citire(n,m,k,l,v);
for i:=1 to n do v[i].viteza:=1;
repeat
suc(v,n,m,k,l,ok);
if not ok then begin
i:=n;
ok:=true;
repeat
if v[i].viteza<>v[i-1].viteza then begin
v[i-1].viteza:=v[i-1].viteza+1;
ok:=false;
end;
i:=i-1
until (i=1) or (not ok);
if i=1 then begin
v[n].viteza:=v[n].viteza+1;
ok:=false;
end;
end;
until (ok) or (v[n].viteza>m);
if ok then for i:=1 to n do writeln(g,v[i].viteza)
else write(g,'-1');
close(f);
close(g);
end.