Cod sursa(job #204856)

Utilizator mordredSimionescu Andrei mordred Data 27 august 2008 15:53:11
Problema Grozavesti Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>
#define min(a,b) ((a>b)?b:a)
#define nmax 1000002

int n,i,j,k,a[302][302],min,x,y,m,sc[902],aux;

int main(){
 freopen("grozavesti.in","r",stdin);
 freopen("grozavesti.out","w",stdout);
 
 scanf("%d",&n);
 
 for(i=1;i<=n;++i)
    for(j=1;j<=n;++j)
        scanf("%d",&a[i][j]);
 
 for(i=1;i<=n-1;++i)
    {
    min = a[i][i];x=y=0;
    for(j=i;j<=n;++j) 
        for(k=i;k<=n;++k)
            if(a[j][k]<min)
                min=a[j][k],x=j,y=k;
    if(x&&y)
        {
        if(y!=i){
        sc[++m]=1,
        sc[++m]=y,
        sc[++m]=i;
        for(j=i;j<=n;++j){aux=a[j][i];a[j][i]=a[j][y];a[j][y]=aux;}
        }
        if(x!=i){
        sc[++m]=0,
        sc[++m]=x,
        sc[++m]=i;
        for(j=i;j<=n;++j){aux=a[i][j];a[i][j]=a[x][j];a[x][j]=aux;}
        }
        }
    }

 printf("%d\n",m/3);
 for(i=1;i<=m;++i)
    {
    if(i%3==1)printf((sc[i])?"C ":"L ");
    else if(i%3==2)printf("%d ",sc[i]);
    else printf("%d\n",sc[i]);
    }
 /*
 for(i=1;i<=n;++i){
    for(j=1;j<=n;++j)
        printf("%d ",a[i][j]);printf("\n");}
 
 */
 return 0;
}