Cod sursa(job #115383)

Utilizator FlorianFlorian Marcu Florian Data 16 decembrie 2007 12:28:38
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasele 5-8 Marime 1.26 kb
#include<stdio.h>
#include<values.h>
FILE*f=fopen("grozavesti.in","r");
FILE*g=fopen("grozavesti.out","w");
long a[300][300],n,sol[700][5],nrsol;
void linii(int p, int k)
	{
	   int i;            int aux;
	   for(i=1;i<=n;++i)
		{
		aux=a[p][i];
		a[p][i]=a[k][i];
		a[k][i]=aux;
		}
	   }
void coloane(long p, long k)
	{ int aux;
	for(int j=1;j<=n;++j)
		{
		aux=a[j][p];
		a[j][p]=a[j][k];
		a[j][k]=aux;
		}
	}
void read()
	{
	int i,j;
	fscanf(f,"%ld",&n);
	for(i=0;i<=n+1;++i)
		{
		a[0][i]=a[i][0]=0;
		}

	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j) fscanf(f,"%ld",&a[i][j]);
	}
void solve()
	{
	long i,j,p,k;
	for(i=1;i<=n;++i)
		{
		p=i;
		for(j=i+1;j<=n;++j)
			if(a[j][i]<a[p][i] && a[j][i]>=a[i-1][i-1]) p=j;
		if(p!=i)
			{
			linii(i,p);
			sol[++nrsol][1]=1;
			sol[nrsol][2]=i;
			sol[nrsol][3]=p;
			}
		p=i;
		for(j=i+1;j<=n;++j)
			if(a[i][j]>a[i][p] && a[i][j]>=a[i-1][i-1]) p=j;
		if(p!=i)
			{
			coloane(i,p);
			sol[++nrsol][1]=2;
			sol[nrsol][2]=i;
			sol[nrsol][3]=p;
			}
		}
	fprintf(g,"%ld\n",nrsol);
	for(i=1;i<=nrsol;++i)
		{
		if(sol[i][1]==1) fprintf(g,"L ");
		else fprintf(g,"C ");
		fprintf(g,"%ld %ld\n",sol[i][2],sol[i][3]);
		}
	}
int main()
	{
	read();
	solve();
	return 0;
	}