EQ - Electronic queue

Tác giả: RR

Ngôn ngữ: Pascal

{$MODE OBJFPC}

uses math;
const
  FINP          =       '';
  FOUT          =       '';
  MAXN          =       55;

var
  f1,f2         :       text;
  n,test,p      :       longint;
  free          :       array[1..MAXN] of longint;
  res           :       int64;
  a,b           :       longint;

procedure update(a,b:longint);
    var
      i,nn:longint;
    begin
      nn:=1;
      for i:=2 to n do
        if free[i]<free[nn] then nn:=i;

      if free[nn]<a then res:=res+b
      else res:=res+free[nn]-a+b;

      free[nn]:=max(free[nn],a)+b;
    end;

begin
  assign(f1,FINP); reset(f1);
  assign(f2,FOUT); rewrite(f2);

  read(f1,test);
  for test:=1 to test do
    begin
      fillchar(free,sizeof(free),0);
      read(f1,n,p);
      res:=0;
      for p:=1 to p do
        begin
          read(f1,a,b); inc(b,5);
          update(a,b);
        end;
      writeln(f2,res);
    end;

  close(f1); close(f2);
end.

Download