Pagini recente » Cod sursa (job #3033343) | Cod sursa (job #38073) | Cod sursa (job #1619227) | Cod sursa (job #2342) | Cod sursa (job #25644)
Cod sursa(job #25644)
const maxn=1000;
var t:TExt;
Px,Py,O:array[0..maxn]of longint;
j,n,m,d,p,suma,cat,pas,i,x,y,sol,old,aux:longint;
function min(a,b:longint):longint;begin if a>b then min:=b else min:=a;end;
begin
randomize;sol:=maxlongint;
assign(t,'magazin.in');reset(T);readln(t,p,n,m,d);
for i:=1 to P do begin readln(t,Px[i],Py[i]);O[i]:=i;end;
old:=sol;O[p+1]:=p+1;PX[0]:=0;Py[0]:=0;PX[p+1]:=n+1;Py[0]:=0;O[0]:=0;
repeat
for pas:=1 to 100 do
begin
for cat:=1 to 20 do
begin
i:=random(p)+1;j:=random(p)+1;aux:=O[i];O[i]:=O[j];O[j]:=aux;
end;
for i:=1 to p+1 do
begin
if Px[O[i-1]]=Px[O[i]] then inc(suma,abs(Py[O[i-1]]-Py[O[i]])) else
begin
inc(suma,abs(Px[O[i-1]]-Px[O[i]])*D+min(Py[O[i-1]]+Py[O[i]],2*m+2-Py[O[i-1]]-Py[O[i]]));
end;
end;
if suma<sol then sol:=suma;
end;
until old=sol;
assign(T,'magazin.out');rewrite(T);writeln(T,sol);close(T);
end.