Pagini recente » Cod sursa (job #146573) | Cod sursa (job #1852820) | Cod sursa (job #794348) | Cod sursa (job #1320571) | Cod sursa (job #112238)
Cod sursa(job #112238)
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define MAXN 310
#define pb push_back
#define PII pair<int, int>
#define mp make_pair
#define x first
#define y second
int N, A[MAXN][MAXN];
vector< PII > sol;
void solve(void)
{
int i, j, k, val, l, c;
for(i = 1; i <= N; i++)
{
for(val = 1<<20, j = i; j <= N; j++)
for(k = i; k <= N; k++)
if(A[j][k] < val)
val = A[j][k], l = j, c = k;
if(i != l)
sol.pb( mp(i, l) );
if(i != c)
sol.pb( mp(i+N, c+N) );
for(j = i; j <= N; j++)
if(i != l)
A[i][j]^=A[l][j], A[l][j]^=A[i][j], A[i][j]^=A[l][j];
for(j = i; j <= N; j++)
if(i != c)
A[j][i]^=A[j][c], A[j][c]^=A[j][i], A[j][i]^=A[j][c];
}
}
void read_data(void)
{
int i, j;
scanf("%d", &N);
for(i = 1; i <= N; i++)
for(j = 1; j <= N; j++)
scanf("%d ", &A[i][j]);
}
void write_data(void)
{
int i;
printf("%d\n", sol.size());
for(i = 0; i < sol.size(); i++)
{
if(sol[i].x <= N)
printf("L %d %d\n", sol[i].x, sol[i].y);
else
printf("C %d %d\n", sol[i].x-N, sol[i].y-N);
}
}
int main(void)
{
freopen("grozavesti.in", "rt", stdin);
freopen("grozavesti.out", "wt", stdout);
read_data();
solve();
write_data();
return 0;
}