Cod sursa(job #2099609)

Utilizator mariusn01Marius Nicoli mariusn01 Data 4 ianuarie 2018 15:36:43
Problema Tablete Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <fstream>

using namespace std;
int a[1002][1002];
int n, k, i, j, aux, t;
int main () {
    ifstream fin ("tablete.in");
    ofstream fout("tablete.out");

    fin>>n>>k;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            a[i][j] = ++t;

    if (n%2 == 0) {
        if (k%2 == 1) {
            t = 1;
            for (i=1;i<=n/2;i++)
                for (j=1;j<=n;j++) {
                    a[i][j] = t;
                    t+=2;
                }
            t = 2;
            for (i=n/2+1;i<=n;i++)
                for (j=1;j<=n;j++) {
                    a[i][j] = t;
                    t+=2;
                }


            for (i=1;i<=n/2;i++)
                swap(a[i][k], a[i+n/2][k]);
        }
    } else {
        if (k % 2 == 0) {
            for (i=2; i<n; i+=2) {
                aux = a[i][k];
                for (j=k;j<n;j++)
                    a[i][j] = a[i][j+1];
                a[i][n] = a[i+1][1];
                a[i+1][1] = aux;
            }
        } else {
            for (i=1; i<n; i+=2) {
                aux = a[i][k];
                for (j=k;j<n;j++)
                    a[i][j] = a[i][j+1];
                a[i][n] = a[i+1][1];
                a[i+1][1] = aux;
            }
            for (j=n;j>1;j--)
                a[n][j] = a[n][j-1];
            a[n][1] = a[n-1][n];
            a[n-1][n] = n*n;


        }
    }

    for (i=1;i<=n;i++) {
        for (j=1;j<=n;j++)
            fout<<a[i][j]<<" ";
        fout<<"\n";
    }
    return 0;
}

/*
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35
36 37 38 39 40 41 42
43 44 45 46 47 48 49

 1  2  3  4  6  7  8
 5  9 10 11 12 13 14
15 16 17 18 20 21 22
19 23 24 25 26 27 28
29 30 31 32 34 35 36
33 37 38 39 40 41 42
43 44 45 46 47 48 49

*/