Cod sursa(job #115588)

Utilizator savimSerban Andrei Stan savim Data 16 decembrie 2007 18:13:56
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
int poz,n,i,j,k,nr,x,max;
int a[301][301];
int g[301];
int v[1000001];
int main()
{
	 freopen("grozavesti.in","r",stdin);
	 freopen("grozavesti.out","w",stdout);

	 k=0;
	 scanf("%d",&n);
	 for (i=1; i<=n; i++)
		 for (j=1; j<=n; j++)
		 {
			 scanf("%d",&a[i][j]);
			 if (i==j)
			 {
				k++;
				g[k]=a[i][j];
				v[a[i][j]]++;
			 }

			if (a[i][j]>max) max=a[i][j];
		 }
	 poz=0;nr=0;
	 for (k=1; k<=max; k++)
	 if (v[k]!=0)
	 {
		for (i=1; i<=v[k]; i++)
		{
			poz++;
			if (g[poz]!=k)
			{
				for (j=poz+1; j<=n; j++)
				if (g[j]==k)
				{
					nr+=2;
					x=g[poz];
					g[poz]=g[j];
					g[j]=x;
				}
			}
		}
	 }
	 printf("%d\n",nr);

	 for (i=1; i<=n; i++)
		g[i]=a[i][i];
	 poz=0;
	 for (k=1; k<=max; k++)
	 if (v[k]!=0)
	 {
		for (i=1; i<=v[k]; i++)
		{
			poz++;
			if (g[poz]!=k)
			{
				for (j=poz+1; j<=n; j++)
				if (g[j]==k)
				{
					x=g[poz];
					g[poz]=g[j];
					g[j]=x;
					printf("L %d %d\n",poz,j);
					printf("C %d %d\n",poz,j);
				}
			}
		}
	 }
	 return 0;
}