Cod sursa(job #115434)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 16 decembrie 2007 12:39:44
Problema Grozavesti Scor 0
Compilator fpc Status done
Runda preONI 2008, Runda 2, Clasele 5-8 Marime 2.27 kb
program grozavesti;
var f,g:text;
    v:array[0..300,0..300]of 1..1000000;
    t1:array[0..300]of char;
    t2,t3:array[0..300]of 1..1000000;
    n,i,j,minl,cont,minc,aux,l,c,min,y,ok:longint;
    p:char;
begin
assign(f,'grozavesti.in');
assign(g,'grozavesti.out');
reset(f);
rewrite(g);
read(f,n);
for i:=1 to n do
  for j:=1 to n do read(f,v[i,j]);
for i:=1 to n do
  begin
    if (v[i,i]>v[i-1,i-1])then
    begin
    minl:=v[i-1,i-1];
    minc:=v[i-1,i-1];
    l:=0;
    c:=0;
    for j:=i+1 to n do
      if (v[i,j]>minl)and(v[i,j]<v[i,i])then
        begin
          minl:=v[i,j];
          l:=j;
        end;
    for j:=i+1 to n do
      if (v[j,i]>minc)and(v[j,i]<v[i,i])then
        begin
          minc:=v[j,i];
          c:=j;
        end;
    min:=0;
    if (minl>v[i-1,i-1])then
      begin
        if (minc<v[i,i])then
          begin
            if (minc<minl)then
              begin
                min:=minc;
                p:='c';
              end else
                begin
                  min:=minl;
                  p:='l';
                end;
          end else
            begin
              min:=minl;
              p:='l';
            end;
      end else
        begin
          if (minc<v[i-1,i-1])then
            begin
              min:=minc;
              p:='c';
            end;
        end;
    if (min>0)then
      begin
        if (p='l')then
          begin
            for y:=1 to n do
              begin
                aux:=v[y,i];
                v[y,i]:=v[y,c];
                v[y,c]:=aux;
              end;
            cont:=cont+1;
            t1[cont]:='C';
            t2[cont]:=i;
            t3[cont]:=c;
          end else
        if (p='c')then
          begin
            for y:=1 to n do
              begin
                aux:=v[i,y];
                v[i,y]:=v[c,y];
                v[c,y]:=aux;
              end;
            cont:=cont+1;
            t1[cont]:='L';
            t2[cont]:=i;
            t3[cont]:=l;
          end;
      end;
    ok:=0;
    for j:=1 to n do
      if (v[j,j]<v[j-1,j-1])then ok:=1;
    if (ok=0)then break;
    end;
  end;
writeln(g,cont);
for i:=1 to cont do writeln(g,t1[i],' ',t2[i],' ',t3[i]);
close(f);
close(g);
end.