Cod sursa(job #116184)

Utilizator floringh06Florin Ghesu floringh06 Data 17 decembrie 2007 22:11:11
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <cstdio>
#include <cstring>

using namespace std;

#define FIN "grozavesti.in"
#define FOUT "grozavesti.out"
#define MAX_N 305

typedef struct 
{
        int a1,a2;
} point;

int A[MAX_N][MAX_N];
int N, i, j;
int Np;
point S[MAX_N << 1];

    int main ()
    {
        freopen (FIN, "r", stdin);
        freopen (FOUT, "w", stdout);
        
        scanf ("%d", &N);
        for (i = 1; i <= N; ++i)
            for (j = 1; j <= N; ++j)
                scanf ("%d", A[i] + j);
        
        int x = 0;
        for (i = 1; i <= N - 1; ++i)
            if (A[i][i] > A[i+1][i+1]) 
            {
                       x = 1;
                       break;
            }
        if (!x) 
        {
                printf ("0\n");
                return 0;
        } 
        
        for (x = 1; x < N; ++x)
        {
            int min = 100000000;
            int h;
            for (i = x; i <= N; ++i)
                if (A[i][i] < min) 
                {
                          min = A[i][i];
                          h = i;
                }
            if (h == x) continue;
            int d = A[x][x]; A[x][x] = A[h][h]; A[h][h] = d;
            Np++;
            S[Np].a1 = x; S[Np].a2 = h;
//            printf ("L %d %d\nC %d %d\n", x, h, x, h);
        }
        printf ("%d\n", Np << 1);
        for (i = 1; i <= Np; ++i)
            printf ("L %d %d\nC %d %d\n", S[i].a1, S[i].a2, S[i].a1, S[i].a2);
        
        
        return 0;
    }