Cod sursa(job #1883999)

Utilizator priboiraduPriboi Radu Bogdan priboiradu Data 18 februarie 2017 13:10:57
Problema Tablete Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <stdio.h>
#include <stdlib.h>

char f[1000000];

int a[1000][1000];

int main() {
    FILE *fin, *fout;
    int n, k, nr, i, j;
    fin = fopen( "tablete.in", "r" );
    fout = fopen( "tablete.out", "w" );
    fscanf( fin, "%d%d", &n, &k );
    k--;
    nr = n * n;
    for ( i = n - 1; i >= 0; i-- ) {
        for ( j = n - 1; j > k; j-- )
            nr--;
        if ( nr % 2 == 0 ) {
            a[i][k] = nr;
            f[nr] = 1;
            nr--;
        } else {
            a[i][k] = nr - 1;
            f[nr - 1] = 1;
            nr -= 2;
        }
    }
    nr = n * n;
    for ( i = n - 1; i >= 0; i-- ) {
        for ( j = n - 1; j > k; j-- ) {
            while ( f[nr] == 1 )
                nr--;
            a[i][j] = nr;
            f[nr] = 1;
        }
    }
    nr = 1;
    for ( i = 0; i < n; i++ ) {
        for ( j = 0; j < k; j++ ) {
            while ( f[nr] == 1 )
                nr++;
            a[i][j] = nr;
            f[nr] = 1;
        }
    }
    for ( i = 0; i < n; i++ ) {
        for ( j = 0; j < n; j++ )
            fprintf( fout, "%d ", a[i][j] );
        fprintf( fout, "\n" );
    }
    fclose( fin );
    fclose( fout );
    return 0;
}