Cod sursa(job #121129)

Utilizator za_wolfpalianos cristian za_wolf Data 7 ianuarie 2008 21:22:57
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
#define XMAX 301
long a,x[XMAX][XMAX],n,lin,col,i,j,k,l,min,rez,nr;
struct kkt
{
	long c,x1,x2;
};
kkt sol[2*XMAX];
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",&x[i][j]);
	min=10000000;
	nr=-1;
	for (i=1;i<=n;i++)
	{
		min=10000000;
		for (j=i;j<=n;j++)
			for (l=i;l<=n;l++)
				if (x[j][l]<=min&&x[j][l]>=nr)
				{
					min=x[j][l];
					lin=j;
					col=l;
				}
		nr=x[lin][col];
		if (!(lin==col&&lin==i))
		{

		if (col!=i)
		{
			for (l=i;l<=n;l++)
			{
				a=x[l][i];
				x[l][i]=x[l][col];
				x[l][col]=a;
			}
			rez++;
			sol[rez].c=1;
			sol[rez].x1=i;
			sol[rez].x2=col;
		}
		if (lin!=i)
		{
			for (l=i;l<=n;l++)
			{
				a=x[i][l];
				x[i][l]=x[lin][l];
				x[lin][l]=a;
			}
			rez++;
			sol[rez].c=2;
			sol[rez].x1=i;
			sol[rez].x2=lin;
		}


		}
		l=1;
	}
	printf("%ld\n",rez);
	for (i=1;i<=rez;i++)
	if (sol[i].c==1)
	printf("C %ld %ld\n",sol[i].x1,sol[i].x2);
	else
	printf("L %ld %ld\n",sol[i].x1,sol[i].x2);



	return 0;
}