Pagini recente » Cod sursa (job #863850) | Cod sursa (job #3138191) | Cod sursa (job #1548070) | Cod sursa (job #604322) | Cod sursa (job #986093)
Cod sursa(job #986093)
#include<stdio.h>
#include<set>
using namespace std;
FILE *f = fopen("grozavesti.in","r");
FILE *g = fopen("grozavesti.out","w");
#define MaxN 400
int N,Sol;
int A[MaxN][MaxN];
int SolV[MaxN][3];
void citire(void)
{
fscanf(f,"%d ",&N);
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
fscanf(f,"%d ",&A[i][j]);
}
inline void swap(int a,int b,int c,int d)
{
int aux = A[a][b];
A[a][b] = A[c][d];
A[c][d] = aux;
}
inline void change(int poz,int diag)
{
if(poz == diag)
return ;
for(int i=1;i<=diag;i++)
swap(poz,i,diag,i);
++ Sol;
SolV[Sol][1] = poz;
SolV[Sol][2] = diag;
for(int i=1;i<=diag;i++)
swap(i,poz,i,diag);
}
void Rezolvare(void)
{
int valMax,valPoz;
for(int i=N;i;--i)
{
valMax = 0;
for(int j=1;j<=i;j++)
if(valMax <= A[j][j])
valMax = A[j][j],
valPoz = j;
change(valPoz,i);
//afisare();
}
}
int main()
{
citire();
Rezolvare();
fprintf(g,"%d\n",Sol<<1);
for(int i=1;i<=Sol;i++)
fprintf(g,"L %d %d\nC %d %d\n",SolV[i][1],SolV[i][2],SolV[i][1],SolV[i][2]);
}