Cod sursa(job #123863)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 17 ianuarie 2008 16:21:18
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>

long n,i,j,a[303][303],ind[303],sol;
long q,x[603],y[603];

int cmp(const void * n1, const void * n2){
    return (a[*(long*)n1][*(long*)n1]-a[*(long*)n2][*(long*)n2]);
}

void path(int k){
     if (ind[k]!=i){
        //printf("%ld\n",k);
        path(ind[k]);
        q++;x[q]=k;y[q]=ind[k];
        ind[k]=k;
     }
     else ind[k]=k;
     
}

int main(){
    freopen("grozavesti.in","r",stdin);
    freopen("grozavesti.out","w",stdout);
    
    scanf("%ld",&n);
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            scanf("%ld",&a[i][j]);
      
    for (i=0;i<=n;i++)
        ind[i]=i;
    qsort(ind,n+1,sizeof(long),cmp);
    
    for (i=1;i<=n;i++)
        if (ind[i]!=i){
           path(i);
        }
    printf("%ld\n",2*q);
    for (i=q;i>0;i--){
        printf("C %ld %ld\n",x[i],y[i]);
        printf("L %ld %ld\n",x[i],y[i]);
    }
    
return 0;
}