Cod sursa(job #115384)

Utilizator ioraIoana Radu iora Data 16 decembrie 2007 12:28:38
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasele 5-8 Marime 1.36 kb
#include<stdio.h>
#include<values.h>
int ok,j,n,ii,jj,lin,col,i1[601],i2[601];
long i,nr,x,mm,min,a[301][301];
char vc[601];
int main()
{
	freopen("grozavesti.in","r",stdin);
	freopen("grozavesti.out","w",stdout);

	scanf("%d",&n);
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j)
			scanf("%ld",&a[i][j]);

	ok=1;
	min=MAXLONG;
	mm=0;
	ii=0;
	jj=0;
	while(ok)
		{
			for(i=1;i<=n;++i)
				for(j=1;j<=n;++j)
					if(a[i][j]<=min&&a[i][j]>=mm&&i>ii&&j>jj)
						{
						min=a[i][j];
						col=j;
						lin=i;
						}
			for(i=1;i<=n;++i)
				{
				x=a[lin][i];
				a[lin][i]=a[ii+1][i];
				a[ii+1][i]=x;
				}
			for(i=1;i<=n;++i)
				{
				x=a[i][col];
				a[i][col]=a[i][jj+1];
				a[i][jj+1]=x;
				}

			if(lin!=ii+1||col!=jj+1)
				{
					if(lin==ii+1)
						{
							vc[++nr]='C';
							i1[nr]=col;
							i2[nr]=jj+1;
						}
					else
					if(col==jj+1)
						{
							vc[++nr]='L';
							i1[nr]=lin;
							i2[nr]=ii+1;
						}
					else
					 {
						 vc[++nr]='C';
						 i1[nr]=col;
						 i2[nr]=jj+1;
						 vc[++nr]='L';
						 i1[nr]=lin;
						 i2[nr]=ii+1;
					 }
				}
			ok=0;
			for(i=1;i<n;++i)
				if (a[i][i]>a[i+1][i+1]) { ok=1; break;}
			mm=min;
			min=MAXLONG;
			ii=ii+1;
			jj+=1;
		}

		printf("%ld\n",nr);
		for(i=1;i<=nr;++i)

				printf("%c %d %d\n",vc[i],i1[i],i2[i]);

	return 0;
}