Cod sursa(job #250425)

Utilizator chelaru_t_achelaru traian andrei chelaru_t_a Data 30 ianuarie 2009 22:07:06
Problema Eprubeta Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.19 kb
var n,m,k,a,b,i,j,op:integer;
    q:array [0..2000,0..2000] of longint;
    z:longint;
    f,g:text;

 procedure citire;
  var i,j,x,y:integer;
  begin
   readln(f,n,m,z,a,b);
   for i:=0 to n-1 do
     for j:=0 to n-1 do q[i,j]:=((a+j)*(i+b) div 4) mod z;
  end;

 procedure op1(i,j:integer);
  var x,y,a,b:integer;
      aux:longint;
  begin
   for x:=i to j-1 do
     for y:=x to j-1 do
       begin
       a:=j+(i-x);
       b:=j+(i-y);
       aux:=q[x,y];
       q[x,y]:=q[a,b];
       q[a,b]:=aux;
       end;
  end;

 procedure op2(i,j:integer);
  var x,y:integer;
      s:longint;
  begin
   s:=0;
   for x:=i to j do
     for y:=i to j do s:=s+q[x,y];
   writeln(g,s);
  end;

 procedure tmod;
  var t,s:int64;
      i,j:integer;
  begin
   t:=0;
   for i:=0 to n-1 do
     begin
     s:=0;
     for j:=0 to n-1 do s:=s+q[i,j];
     t:=t+(s*s*(i+1));
     end;
   writeln(g,t mod 4294967296);
  end;

begin
  assign(f,'eprubeta.in');
  assign(g,'eprubeta.out');
  reset(f);
  rewrite(g);
  citire;
  for k:=1 to m do
    begin
    readln(f,op,i,j);
    if op=1 then op1(i,j)
    else op2(i,j);
    end;
  tmod;
  close(f);
  close(g);
end.