Cod sursa(job #94565)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 23 octombrie 2007 20:40:20
Problema Orase Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.39 kb
var a,h,b,c:array[0..50000]of longint;
    m,n,i,j,k,max:longint;
    f:text;
procedure inter(p,r:longint);
var i,j,q,u:longint;
begin
   q:=(p+r)div 2;
   i:=p;
   j:=q+1;
   u:=p-1;
   while(i<=q)and(j<=r) do
   begin
   u:=u+1;
   if a[i]<a[j] then begin b[u]:=a[i];
                           c[u]:=h[i];
                           i:=i+1;
                     end
                else begin b[u]:=a[j];
                           c[u]:=h[j];
                           j:=j+1;
                     end;
   end;
   while(i<=q)do
   begin
   u:=u+1;
   b[u]:=a[i];
   c[u]:=h[i];
   i:=i+1;
   end;
   while(j<=r)do
   begin
   u:=u+1;
   b[u]:=a[j];
   c[u]:=h[j];
   j:=j+1;
   end;
   for i:=p to r do
   begin
   h[i]:=c[i];
   a[i]:=b[i];
   end;
end;
procedure merge(p,r:longint);
var q:longint;
begin
   if p<r then begin q:=(p+r) div 2;
                     merge(p,q);
                     merge(q+1,r);
                     inter(p,r);
               end;
end;
begin
   assign(f,'orase.in');
   reset(f);
   read(f,m,n);
   for i:=1 to n do
   read(f,a[i],h[i]);
   merge(1,n);
   j:=1;
   close(f);
   assign(f,'orase.out');
   rewrite(f);
   for i:=2 to n do
   begin
   if(h[i]+a[i]+h[j]-a[j]<h[i]+a[i]+h[i-1]-a[i-1])then j:=i-1;
   if(h[i]+a[i]+h[j]-a[j]>max)then max:=(h[i]+a[i]+h[j]-a[j]);
   end;
   writeln(f,max);
   close(f);
end.