Cod sursa(job #2099618)

Utilizator mariusn01Marius Nicoli mariusn01 Data 4 ianuarie 2018 15:47:21
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.78 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) {

            ///while (1);

            for (i=1; i<n; i+=1) {
                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-2][n];
            a[n-2][n] = n*n;



        }
    } 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  4  5  6  7
 3  8 10 11 12 13
 9 14 16 17 18 19
15 20 22 23 24 25
21 26 28 29 30 31
27 32 33 34 35 36


 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

*/