Cod sursa(job #137487)

Utilizator petrePajarcu Alexandru-Petrisor petre Data 17 februarie 2008 12:26:32
Problema Stalpi Scor 0
Compilator fpc Status done
Runda preONI 2008, Runda 4, Clasa a 10-a Marime 1.1 kb
var x,s,d,sol1,sol2,c:array[0..100000] of longint;
n,i,j,k,l,min:longint;

begin
assign(input,'stalpi.in');
assign(output,'stalpi.out');
reset(input);
rewrite(output);
read(N);
for i:=1 to n do
        read(x[i],c[i],s[i],d[i]);
for i:=1 to n do
        begin
        min:=sol1[i-1];
        j:=i;
        while (x[i]-x[j]<=s[i])and (J>0) do
                begin
                dec(j);
                if sol1[j]<min then min:=sol1[j];
                if sol2[j]<min then min:=sol2[j];
                end;
        sol1[i]:=min+c[i];
        while (x[j+1]-x[i]<=d[i])and(j<N) do
                begin
                inc(J);
                if (sol2[j]>sol1[i]) or (sol2[j]=0)then
                sol2[j]:=sol1[i];
                end;
        j:=i;
        while (x[i]-x[j-1]<=d[i])and(J>1) do
                begin
                dec(J);
                if (sol2[j]>sol1[i]) then
                sol2[j]:=sol1[i];
                end;

        end;

if sol1[n]<sol2[n] then
                writeln(sol1[n])
                else writeln(sol2[n]);
close(output);
close(input);
end.