Cod sursa(job #137692)

Utilizator h_istvanHevele Istvan h_istvan Data 17 februarie 2008 12:56:35
Problema Carnati Scor 30
Compilator fpc Status done
Runda preONI 2008, Runda 4, Clasa a 10-a Marime 1.33 kb
program carnati;
type ember = record
             t:word;
             p:longint;
             end;
var f:text;
    n,c,i,j,k:longint;
    v:array[1..2000] of ember;
    max,e:extended;

procedure qsort(bal,jobb:longint);
var i,j,va:longint;
    cs:ember;
begin
     i:=bal;j:=jobb;
     va:=v[(i+j) div 2].t;
     while (i<=j) do
     begin
          while(v[i].t < va) do inc(i);
          while(v[j].t > va) do dec(j);
          if(i<=j) then
          begin
               cs:=v[i];
               v[i]:=v[j];
               v[j]:=cs;
               inc(i);dec(j);
          end;
     end;
     if(bal<j) then qsort(bal,j);
     if(i<jobb) then qsort(i,jobb);
end;


begin
     assign(f,'carnati.in');
     reset(f);
     readln(f,n,c);
     for i:=1 to n do
         readln(f,v[i].t,v[i].p);
     close(f);

     qsort(1,n);

     for i:=1 to n do
         for k:=i to n do
         begin
              e:=0;
              for j:=i to n do
              begin
                   if(v[j].p >= v[k].p) then e:=e+v[k].p;
                   if((e-(v[j].t-v[i].t+1)*c)>max) then
                   begin
                        max:=e-(v[j].t-v[i].t+1)*c;
                   end;
              end;
         end;
     assign(f,'carnati.out');
     rewrite(f);
     writeln(f,max:0:0);
     close(f);
end.