Cod sursa(job #115652)

Utilizator petrecgClinciu Glisca Petre petrecg Data 16 decembrie 2007 19:12:42
Problema Grozavesti Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.37 kb
var a:array[1..100,1..100]of longint;f:text;
    i,j,n,x,min,l:longint;
    sol,soll,solc,v,w1,w2,w3:array[1..300]of integer;

begin
 assign(f,'grozavesti.in');reset(f);readln(f,n);
 for i:=1 to n do
  begin min:=1000000000;
   for j:=1 to n do
    begin
     read(f,a[i,j]);
     if(a[i,j]<=min)and(v[j]=0)then
      begin x:=j;min:=a[i,j];end;end;
     sol[i]:=a[i,x];
     soll[i]:=i;solc[i]:=x;v[x]:=1;
  end;
 for i:=1 to n-1 do for j:=i+1 to n do
  if sol[i]>sol[j] then
   begin
    x:=sol[i];sol[i]:=sol[j];sol[j]:=x;
    x:=soll[i];soll[i]:=soll[j];soll[j]:=x;
    x:=solc[i];solc[i]:=solc[j];solc[j]:=x;
   end;
 for i:=1 to n do
  begin
   if soll[i]<>i then
    begin
     for j:=1 to n do
      begin x:=a[i,j];a[i,j]:=a[soll[i],j];a[soll[i],j]:=x;end;
     for j:=1 to n do if soll[j]=i then soll[j]:=soll[i];
     inc(l);w1[l]:=1;w2[l]:=i;w3[l]:=soll[i];
     soll[i]:=i;
    end;
   if solc[i]<>i then
    begin
     for j:=1 to n do
      begin x:=a[j,i];a[j,i]:=a[j,solc[i]];a[j,solc[i]]:=x;end;
     for j:=1 to n do if solc[j]=i then solc[j]:=solc[i];
     inc(l);w1[l]:=2;w2[l]:=i;w3[l]:=solc[i];
     solc[i]:=i;
    end;
  end;
 close(f);assign(f,'grozavesti.out');rewrite(f);
 writeln(f,l);for i:=1 to l do
  begin
   if w1[i]=1 then write(f,'L ') else write(f,'C ');
   writeln(f,w2[i],' ',w3[i]);
  end;
 close(f);
end.