Pagini recente » Cod sursa (job #570733) | Cod sursa (job #2421069) | Cod sursa (job #457225) | Cod sursa (job #1339972) | Cod sursa (job #373294)
Cod sursa(job #373294)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define file_in "grozavesti.in"
#define file_out "grozavesti.out"
#define Nmax 310
int a[Nmax][Nmax];
int n,nrint,v1[Nmax*2],v2[Nmax*2];
int sir[Nmax*Nmax],nr;
int ok()
{
for (int i=2;i<=n;++i)
if (a[i-1][i-1]>a[i][i])
return 0;
return 1;
}
void swap(int *a, int *b)
{
int aux=*a;
*a=*b;
*b=aux;
}
void scl(int x, int y)
{
int i;
for(i=x;i<=n;++i)
swap(&a[x][i],&a[y][i]);
}
void scc(int x, int y)
{
int i;
for(i=x;i<=n;++i)
swap(&a[i][x],&a[i][y]);
}
int main()
{
int i,j,k,x;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &n);
nr=0;
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
{
scanf("%d", &a[i][j]);
sir[++nr]=a[i][j];
}
sort(sir+1,sir+nr+1);
nrint=0;
while(!ok())
{
for (k=1;k<=n;++k)
{
x=sir[k];
//cauta pe primu` x;
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
if (a[i][j]==x && i!=k && j!=k)
{
nrint++;
v1[nrint]=k;
v2[nrint]=j;
scc(k,j);
}
}
}
printf("%d\n", nrint);
for (i=1;i<=nrint;++i)
printf("C %d %d\n", v1[i],v2[i]);
fclose(stdin);
fclose(stdout);
return 0;
}