Cod sursa(job #67487)

Utilizator ProtomanAndrei Purice Protoman Data 25 iunie 2007 10:18:48
Problema Orase Scor 100
Compilator fpc Status done
Runda preONI 2007, Runda Finala, Clasa a 9-a si gimnaziu Marime 1.63 kb
var i,n,m,lmax,imax,dmax,max:longint;
    d,l:array[1..50000] of longint;
    f1,f2:text;

procedure pozitie(var m:longint; p,u:longint);
var i,j,di,dj,aux:longint;
begin
        di:=0;
        dj:=-1;
        i:=p;
        j:=u;
        while i<j do
        begin
                if d[i]>d[j] then
                begin
                        aux:=di;
                        di:=-dj;
                        dj:=-aux;
                        aux:=d[i];
                        d[i]:=d[j];
                        d[j]:=aux;
                        aux:=l[i];
                        l[i]:=l[j];
                        l[j]:=aux;
                end;
                i:=i+di;
                j:=j+dj;
        end;
        m:=i;
end;

procedure quick(p,u:longint);
var m:longint;
begin
        if p<u then
        begin
                pozitie(m,p,u);
                quick(p,m-1);
                quick(m+1,u);
        end;
end;

begin
        assign(f1,'orase.in');
        reset(f1);
        assign(f2,'orase.out');
        rewrite(f2);
        read(f1,m,n);
        for i:=1 to n do
                read(f1,d[i],l[i]);
        quick(1,n);
        lmax:=l[1];
        dmax:=d[1];
        imax:=1;
        max:=0;
        for i:=2 to n do
        begin
                lmax:=lmax+d[i]-d[i-1];
                if max<lmax+l[i] then max:=lmax+l[i];
                if l[i]>lmax then
                begin
                     lmax:=l[i];
                     dmax:=d[i];
                     imax:=i;
                end;
        end;
        writeln(f2,max);
        close(f1);
        close(f2);
end.