Cod sursa(job #668405)

Utilizator danalex97Dan H Alexandru danalex97 Data 24 ianuarie 2012 21:10:14
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;

int a[300],b[300],i,j;
int n,m;
int c;

int poz(int st,int dr)
{
	int xst=0,xdr=-1;
	while (st<dr)
		if (a[st]<a[dr])
		{	st+=xst;  dr+=xdr;	}
		else
		{	
			swap(a[st],a[dr]);  
			swap(b[st],b[dr]);
			xst=1-xst;	
			xdr=-1-xdr;	
			st+=xst; 
			dr+=xdr;
		}
	return st;
}

void scaner()
{
	int x;
	scanf("%d",&x);
}

void quick(int st,int dr)
{
	int p=poz(st,dr);
	if (st<p-1)
		quick(st,p-1);
	if (p+1<dr)
		quick(p+1,dr);
}

int main()
{
	freopen("grozavesti.in","r",stdin);
	freopen("grozavesti.out","w",stdout);
	scanf("%d%d",&n);
	for (int i=1;i<=n;++i)
		for (int j=1;j<=n;++j)
			if (i!=j)
				scaner();
			else
			{
				scanf("%d",&a[i]);
				b[i]=i;
			}
	quick(1,n);
	for (int i=1;i<=n;++i)
		if (i!=b[i])
			++c;
	printf("%d\n",c);
	for (int i=1;i<=n;++i)
		if (i!=b[i])
		{
			printf("L %d %d\n",i,b[i]);
			printf("C %d %d\n",i,b[i]);
		}
	return 0;
}