Cod sursa(job #486847)

Utilizator Teodor94Teodor Plop Teodor94 Data 22 septembrie 2010 22:37:34
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<cstdio>
#include<algorithm>

using namespace std;

const int N=302;

struct dp
{
    int val,poz;
};

dp v[N];
int n,b[N],a[N][N];

bool comp(dp a,dp b)
{
    return a.val<b.val;
}

void citire()
{
    freopen("grozavesti.in","r",stdin);
    freopen("grozavesti.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            scanf("%d",&a[i][j]);
    for(int i=1;i<=n;++i)
	{
        v[i].val=a[i][i];
		v[i].poz=i;
	}
}

void init()
{
    sort(v+1,v+n+1,comp);
    for(int i=1;i<=n;++i)
        b[v[i].poz]=i;
}

void rez()
{
    int nrc=0;
    for(int i=1;i<=n;++i)
        if(v[i].poz!=i)
        {
            nrc+=2;
            v[b[i]].poz=v[i].poz;
            b[v[i].poz]=b[i];
        }
    printf("%d\n",nrc);
    init();
    for(int i=1;i<=n;++i)
        if(v[i].poz!=i)
        {
            printf("L %d %d\n",v[i].poz,i);
            printf("C %d %d\n",v[i].poz,i);
            v[b[i]].poz=v[i].poz;
            b[v[i].poz]=b[i];
        }
}

int main()
{
    citire();
    init();
    rez();
    return 0;
}