Cod sursa(job #116085)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 17 decembrie 2007 19:31:29
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.01 kb
#include <stdio.h>
#include <math.h>

long i, n, j, k, max, lin, col, nr=0,m, a[400][400];

struct mutare{char ce;long st,dr;};
mutare v[800];


int main() {
	freopen("grozavesti.in", "r", stdin);
	freopen("grozavesti.out", "w", stdout);
	scanf("%ld", &n);
	for (i = 1; i <= n; ++i) {
		for (j = 1; j <= n; ++j) {
			scanf("%ld", &a[i][j]);
		}
	}
	// Partea I:
	for (i = n; i >= 2; --i) {
		max = 0;
		for (j = 1; j <= i; ++j) {
			for (k = 1; k <= i; ++k) {
				if (max <= a[j][k]) {
					max = a[j][k];
					lin = j;
					col = k;
				}
			}
		}
		if (lin != i ) {
			//printf("L %ld %ld\n", lin, i);
			v[++nr].ce = 'L';
			v[nr].st = lin;
			v[nr].dr = i;
			
			for (j = 1; j <= i; ++j) {
				m = a[lin][j];
				a[lin][j] = a[i][j];
				a[i][j] = m;
			}
		if( col != i){
			//printf("C %ld %ld\n", col, i);
			v[++nr].ce = 'C';
			v[nr].st = lin;
			v[nr].dr = i;
			
			for (j = 1; j <= i; ++j) {
				m = a[j][col];
				a[j][col] = a[j][i];
				a[j][i] = m;
			}
		}
			
		}
	}
	//printf("\n");
	/*for (i = 1; i <= n; ++i) {
		for (j = 1; j <= n; ++j) {
			printf("%ld ", a[i][j]);
		}
		printf("\n");
	}*/
	// Partea II:
	/*
	for (i = n; i >= 2; --i) {
		max = 0;
		for (j = 1; j <= i; ++j) {
			if (max <= a[j][i]) {
				max = a[j][i];
				lin = j;
				col = i;
			}
		}
		for (j = 1; j <= i; ++j) {
			if (max <= a[i][j]) {
				max = a[i][j];
				lin = i;
				col = j;
			}
		}
		if (lin == i && col != i) {
			printf("C %ld %ld\n", col, i);
			for (j = 1; j <= n; ++j) {
				m = a[j][col];
				a[j][col] = a[j][i];
				a[j][i] = m;
			}
		}
		if (lin != i && col == i) {
			printf("L %ld %ld\n", lin, i);
			for (j = 1; j <= n; ++j) {
				m = a[lin][j];
				a[lin][j] = a[i][j];
				a[i][j] = m;
			}
		}
	}
	for (i = 1; i <= n; ++i) {
		for (j = 1; j <= n; ++j) {
			printf("%ld ", a[i][j]);
		}
		printf("\n");
	}*/
	printf("%ld\n",nr);
	for( i = 1; i <= nr; i++)
	{
		printf("%c %ld %ld\n",v[i].ce,v[i].st,v[i].dr);
	}
	return 0;
}