Cod sursa(job #1896382)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 28 februarie 2017 17:40:36
Problema Barbar Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#define nmax 200
unsigned short v[nmax][nmax];
int co;

void ciclu( int lstart, int cstart, int n, int m ){
    int nr, aux, l, c;
    co++;
    nr = v[lstart][cstart];
    l = lstart;
    c = cstart;
    while( v[lstart][cstart] != lstart*m+cstart+1 ){
        l = ( nr -1 ) / m;
        c = nr - l * m - 1;
        aux = v[l][c];
        v[l][c] = nr;
        nr = aux;
        co++;
    }
}

int main()
{
    int i, j, n, m, nr;
    FILE *fin, *fout;
    fin = fopen( "bombon.in", "r" );
    fscanf( fin, "%d%d", &n, &m );
    for( i=0; i<n; i++ ){
        for( j=0; j<m; j++ ){
            fscanf( fin, "%hd", &v[i][j] );
        }
    }
    fclose( fin );
    for( i=0; i<n; i++ ){
        for( j=0; j<m; j++ ){
            if( v[i][j] != i*m+j+1 )
                ciclu( i, j, n, m );
        }
    }
    fout = fopen( "bombon.out", "w" );
    fprintf( fout, "%d\n", co );
    fclose( fout );
    return 0;
}