Cod sursa(job #115448)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 16 decembrie 2007 12:43:34
Problema Grozavesti Scor 0
Compilator fpc Status done
Runda preONI 2008, Runda 2, Clasele 5-8 Marime 3.05 kb
var v:array[0..400,0..400]of longint;
    q,a,b:array[1..3000]of longint;
    n,i,j,k,m,p,o,x,s,l,u,r:longint;
    f:text;
begin
   assign(f,'grozavesti.in');
   reset(f);
   read(f,n);
   for i:=1 to n do
   for j:=1 to n do
   read(f,v[i,j]);
   close(f);
   for p:=1 to n do
   begin
   s:=v[p,p];
   for i:=p to n do
   if(v[i,p]<s)and(v[p-1,p-1]<=v[i,p])then begin q[p]:=1;
                                            a[p]:=p;
                                            b[p]:=i;
                                            s:=v[i,p];
                                      end;
   for i:=p to n do
   if(v[p,i]<s)and(v[p-1,p-1]<=v[p,i])then begin q[p]:=2;
                                            a[p]:=p;
                                            b[p]:=i;
                                            s:=v[p,i];
                                      end;
   if q[p]=1 then begin r:=r+1;
                        for i:=1 to n do
                        begin
                        x:=v[a[p],i];
                        v[a[p],i]:=v[b[p],i];
                        v[b[p],i]:=x;
                        end;
                  end;
   if q[p]=2 then begin r:=r+1;
                        for i:=1 to n do
                        begin
                        x:=v[i,a[p]];
                        v[i,a[p]]:=v[i,b[p]];
                        v[i,b[p]]:=x;
                        end;
                  end;
   end;
   x:=0;
   for p:=1 to n-1 do
   if v[p,p]>v[p+1,p+1] then x:=1;
   if x=1 then begin  for i:=1 to n do
   for j:=1 to n do
   read(v[i,j]);
   for p:=1 to n do
   begin
   s:=v[p,p];
   for i:=p to n do
   if(v[i,p]<s)and(v[p-1,p-1]<=v[i,p])then begin q[p]:=1;
                                            a[p]:=p;
                                            b[p]:=i;
                                            s:=v[i,p];
                                      end;
   for i:=p to n do
   if(v[p,i]<s)and(v[p-1,p-1]<=v[p,i])then begin q[p]:=2;
                                            a[p]:=p;
                                            b[p]:=i;
                                            s:=v[p,i];
                                      end;
   if q[p]=1 then begin r:=r+1;
                        for i:=1 to n do
                        begin
                        x:=v[a[p],i];
                        v[a[p],i]:=v[b[p],i];
                        v[b[p],i]:=x;
                        end;
                  end;
   if q[p]=2 then begin r:=r+1;
                        for i:=1 to n do
                        begin
                        x:=v[i,a[p]];
                        v[i,a[p]]:=v[i,b[p]];
                        v[i,b[p]]:=x;
                        end;
                  end;
   end;
   end;
   assign(f,'grozavesti.out');
   rewrite(f);
   writeln(f,r);
   for p:=1 to n*2 do
   if q[p]>0 then begin if q[p]=1 then write(f,'L ')
                                  else write(f,'C ');
                        writeln(f,a[p],' ',b[p]);
                  end;
   close(f);
end.