Cod sursa(job #1828428)

Utilizator silkMarin Dragos silk Data 13 decembrie 2016 12:15:51
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <algorithm>
#define VMax 600
#define NMax 300
using namespace std;

struct abc { int v,p; };
abc a[NMax+1];
abc L[VMax+1];
abc C[VMax+1];

int b[NMax+1];
int nr;

void Swap(abc& x, abc& y)
{
    ++nr;
    L[nr].v = C[nr].v = x.p;
    L[nr].p = C[nr].p = y.p;

    int aux;
    aux = x.v;
    x.v = y.v;
    y.v = aux;
}

int main(){
    freopen("grozavesti.in","r",stdin);
    freopen("grozavesti.out","w",stdout);

    int i,j,x,N;

    scanf("%d",&N);
    for(i = 1; i <= N; ++i)
        for(j = 1; j <= N; ++j)
        {
            scanf("%d",&x);
            if(i==j)
            {
                a[i].v = x;
                a[i].p = i;
            }
        }

    for(i = 1; i <= N; ++i) b[i] = a[i].v;
    sort(b+1,b+N+1);

    for(i = 1; i <= N; ++i)
    if( a[i].v != b[i] )
    {
        for(j = i+1; j <= N; ++j)
        if( a[j].v == b[i] ) break;
        Swap(a[i], a[j]);
    }

    printf("%d\n", 2*nr);
    for(i = 1; i <= nr; ++i)
    {
        printf("C %d %d\n", C[i].v, C[i].p);
        printf("L %d %d\n", L[i].v, L[i].p);
    }


return 0;
}