Cod sursa(job #115323)

Utilizator marius21Petcu Marius marius21 Data 16 decembrie 2007 12:11:07
Problema Grozavesti Scor 0
Compilator fpc Status done
Runda preONI 2008, Runda 2, Clasele 5-8 Marime 1.18 kb
var c,b,a:array[1..300] of longint;
d:array[1..2,1..300] of longint;
f,g:text;
n,nr,aux,x,y,i,j:longint;

procedure scrie(p1,p2:longint);
begin
if p1<>p2 then begin
        writeln(g,'L ',p1,' ',p2);
        writeln(g,'C ',p1,' ',p2);
        end;
end;

procedure sort(x,y:longint);
var i,j,aux:longint;
begin
for i:=x to y-1 do
for j:=i+1 to y do
        if a[i]>a[j] then begin
                aux:=b[i];
                b[i]:=b[j];
                b[j]:=aux;
                end;
end;

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 begin
        read(f,x);
        if i=j then  begin a[i]:=x; b[i]:=i; end;
        end;
sort(1,n);
for i:=1 to n do begin
        a[i]:=i;
        c[i]:=i;
        end;
for i:=1 to n do begin
        if a[b[i]]<>a[c[i]] then begin
        inc(nr);
        d[1,nr]:=a[b[i]];
        d[2,nr]:=a[c[i]];
        end;
        aux:=a[b[i]];
        a[b[i]]:=a[c[i]];
        a[c[i]]:=aux;
        c[a[c[i]]]:=c[i];
        c[i]:=b[i];
        end;
writeln(g,nr);
for i:=1 to n do
        scrie(d[1,i],d[2,i]);
close(f);
close(g);
end.