Pagini recente » Cod sursa (job #624867) | Cod sursa (job #2890621) | Cod sursa (job #911724) | Cod sursa (job #2262346) | Cod sursa (job #304717)
Cod sursa(job #304717)
{sa aduci pe diagonala principala in matrice doar valori crescatore}
program pascal;
type el=record
lit:char;
l1,l2:longint;
end;
var f,g:text; a:array[1..300,1..300] of longint; q:array[1..700] of el;
min,i,j,p,n,k,x,y:longint; ok:boolean;
procedure citire;
begin
assign(f,'grozavesti.in'); reset(f);
assign(g,'grozavesti.out'); rewrite(g);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do read(f,a[i,j]);
readln(f);
end;
end;
procedure interschimbare;
var t:integer; aux:longint;
begin
for t:=1 to n do
begin
aux:=a[x,t];
a[x,t]:=a[i,t];
a[i,t]:=aux;
end;
end;
procedure interschimbare2;
var t:integer; aux:longint;
begin
for t:=1 to n do
begin
aux:=a[t,y];
a[t,y]:=a[t,i];
a[t,i]:=aux;
end;
end;
procedure grozav;
begin
p:=0;
for i:=1 to n do
begin
min:=a[i,i];
for j:=i to n do
for k:=i to n do
if a[j,k]<min then
begin
min:=a[j,k];
x:=j;
y:=k;
end;
if min<>a[i,i] then
begin
if x<>i then
begin
p:=p+1;
q[p].lit:='L';
q[p].l1:=x;
q[p].l2:=i;
interschimbare;
end;
if y<>i then
begin
p:=p+1;
q[p].lit:='C';
q[p].l1:=y;
q[p].l2:=i;
interschimbare2;
end;
end;
end;
ok:=true;
for i:=1 to n-1 do
if a[i,i]>a[i+1,i+1] then
begin
ok:=false;
break;
grozav;
end;
end;
procedure afisare;
begin
writeln(g,p);
for i:=1 to p do writeln(g,q[i].lit,' ',q[i].l1,' ',q[i].l2);
close(g);
end;
begin
citire;
grozav;
afisare;
end.