TABLIC - Tablica

Tác giả: flashmt

Ngôn ngữ: Pascal

const fi='';
      fo='';
var n,k,dem:longint;
    re:array[1..1000] of integer;
    a:array[1..1000] of longint;
    b,cur:array[1..1000,0..1] of integer;

procedure rf;
var i:longint;
begin
     assign(input,fi);
     reset(input);
     readln(n,k);
     for i:=1 to k do
     begin
          readln(a[i],b[i,0],b[i,1]);
          cur[i,0]:=(a[i]+n-1) div n;
          cur[i,1]:=a[i] mod n;
          if cur[i,1]=0 then cur[i,1]:=n;
     end;
     close(input);
end;

procedure rotate(z,val,now:longint);
var i:longint;
begin
     if val=0 then exit;
     dem:=dem+val;
     for i:=now to k do
         if cur[i,z]=cur[now,z] then
         begin
              cur[i,1-z]:=(cur[i,1-z]+val) mod n;
              if cur[i,1-z]=0 then cur[i,1-z]:=n;
         end;
end;

procedure pr;
var i:longint;
begin
     for i:=1 to k do
     begin
          dem:=0;
          if cur[i,1]<=b[i,1] then rotate(0,b[i,1]-cur[i,1],i)
          else rotate(0,b[i,1]+n-cur[i,1],i);
          if cur[i,0]<=b[i,0] then rotate(1,b[i,0]-cur[i,0],i)
          else rotate(1,b[i,0]+n-cur[i,0],i);
          re[i]:=dem;
     end;
end;

procedure wf;
var i:longint;
begin
     assign(output,fo);
     rewrite(output);
     for i:=1 to k do writeln(re[i]);
     close(output);
end;

begin
     rf;
     pr;
     wf;
end.

Download