Cod sursa(job #116497)

Utilizator hadesgamesTache Alexandru hadesgames Data 18 decembrie 2007 18:43:07
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <stdio.h>
struct ceva
{
	char c;
	int x,y;
};
ceva d[2000];
int b[1000],c[1000],a[1002][1002],n,k,nr,m;
FILE *in,*out;
int main()
{
	int i,x,y,j,min,aux,i2;

	in=fopen("grozavesti.in","r");
	out=fopen("grozavesti.out","w");
	fscanf(in,"%d",&n);
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=n;j++)
		{
			fscanf(in,"%d",&a[i][j]);
			if (j==i)
			{
				b[i]=a[i][j];
				c[i]=j;
			}
			if (j>i&&a[i][j]<b[i])
			{
				b[i]=a[i][j];
				c[i]=j;	
			}
		}
	}
	for (i=1;i<=n;i++)
	{
		min=a[i][i];
		x=i;
		y=i;
		for (i2=i;i2<=n;i2++)
			for (j=i;j<=n;j++)
				if (a[i2][j]<min)
				{
					min=a[i2][j];
					x=i2;
					y=j;
				}
		if (x!=i)
		{
			nr++;
			d[nr].c='L';
			d[nr].x=x;
			d[nr].y=i;
			for (j=1;j<=n;j++)
			{
				aux=a[i][j];
				a[i][j]=a[x][j];
				a[x][j]=aux;
			}
			
		}
		if (y!=i)
		{
			nr++;
			d[nr].c='C';
			d[nr].x=y;
			d[nr].y=i;
			for (j=1;j<=n;j++)
			{
				aux=a[j][i];
				a[j][i]=a[j][y];
				a[j][y]=aux;
			}
				
		}
		/*for (j=i+1;j<=n;j++)
			if (b[j]<min)
			{
				min=b[j];
				x=j;
				y=c[j];
			}
		if (x!=i)
		{
			nr++;
			d[nr].c='L';
			d[nr].x=x;
			d[nr].y=i;
			aux=b[i];
			b[i]=b[x];
			b[x]=aux;
			aux=c[i];
			c[i]=c[x];
			c[x]=aux;
			
		}
		if (y!=i)
		{
			nr++;
			d[nr].c='C';
			d[nr].x=y;
			d[nr].y=i;
			for (j=1;j<=n;j++)
				if (c[j]==i)
					c[j]=y;
				else
					if (c[j]==y)
						c[j]=i;
				
		}*/
		
	}
	fprintf(out,"%d\n",nr);
	for (i=1;i<=nr;i++)
		fprintf(out,"%c %d %d\n",d[i].c,d[i].x,d[i].y);
	fclose(in);
	fclose(out);
	return 0;
}