Cod sursa(job #863992)

Utilizator crushackPopescu Silviu crushack Data 24 ianuarie 2013 15:54:36
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <algorithm>
#define NMax 310
using namespace std;

const char IN[]="grozavesti.in",OUT[]="grozavesti.out";

int N,L;
int v[NMax][NMax];
char s[2*NMax][40];

void swaprow(int x,int y){
	for (int i=1;i<=N;++i)
		swap(v[x][i],v[y][i]);
	++L;
	sprintf(s[L],"R %d %d",x,y);
}

void swapcol(int x,int y){
	for (int i=1;i<=N;++i)
		swap(v[i][x],v[i][y]);
	++L;
	sprintf(s[L],"C %d %d",x,y);
}

int main()
{
	int i,j,k,x,y,Min;
	freopen(IN,"r",stdin);
	scanf("%d",&N);
	for (i=1;i<=N;++i) for (j=1;j<=N;++j) scanf("%d",v[i]+j);
	fclose(stdin);

	freopen(OUT,"w",stdout);
	for (k=1;k<=N;++k)
	{
		x=y=k;Min=v[x][y];
		for (i=k;i<=N;++i) for (j=k;j<=N;++j) if (v[i][j]<Min)
			x=i,y=j,Min=v[i][j];
		if (x!=k) swaprow(x,k);
		if (y!=k) swapcol(y,k);
	}

	freopen(OUT,"w",stdout);
	printf("%d\n",L);
	for (i=1;i<=L;++i) printf("%s\n",s[i]);
	fclose(stdout);
	return 0;
}