Cod sursa(job #115780)

Utilizator juniorOvidiu Rosca junior Data 16 decembrie 2007 22:37:54
Problema Grozavesti Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.46 kb
type mutare = record
								lit : char;
                i1, i2 : integer;
							end;
var
	fi, fo : text;
  n, l, c, i, lmin, cmin, ls : integer;
  min, aux : longint;
  a : array [1..300,1..300] of integer;
  s : array [1..600] of mutare;
begin
	assign(fi,'grozavesti.in'); reset(fi);
	assign(fo,'grozavesti.out'); rewrite(fo);
  readln(fi,n);
  for l := 1 to n do
  	begin
    	for c := 1 to n do
      	read(fi,a[l,c]);
      readln(fi);
    end;
  for i := 1 to n do
  	begin
    	min := 1000001;
      for l := i to n do
      	for c := i to n do
        	if a[l,c] < min then
          	begin
            	min := a[l,c];
              lmin := l; cmin := c;
            end;
      if i <> lmin then { Retinem interschimbarea de linii. }
      	begin
      		inc(ls); s[ls].lit := 'L'; s[ls].i1 := i; s[ls].i2 := lmin;
          for c := 1 to n do { Interschimbam liniile. }
          	begin
            	aux := a[i,c]; a[i,c] := a[lmin,c]; a[lmin,c] := aux;
            end;
        end;
      if i <> cmin then { Retinem interschimbarea de coloane. }
      	begin
        	inc(ls); s[ls].lit := 'C'; s[ls].i1 := i; s[ls].i2 := cmin;
          for l := 1 to n do { Interschimbam coloanele. }
          	begin
            	aux := a[l,i]; a[l,i] := a[l,cmin]; a[l,cmin] := aux;
            end
        end;
    end;
  writeln(fo, ls);
  for i := 1 to ls do
  	writeln (fo, s[i].lit,' ',s[i].i1,' ',s[i].i2);
  close(fi); close(fo);
end.