Cod sursa(job #226979)

Utilizator stef2nStefan Istrate stef2n Data 3 decembrie 2008 12:34:59
Problema Tablete Scor Ascuns
Compilator cpp Status done
Runda Marime 1.77 kb
#include <fstream>
#include <cassert>
using namespace std;

const int MAX_N = 1005;

ifstream in("tablete.in");
ofstream out("tablete.out");

int N, K;
int A[MAX_N][MAX_N];

int main() {
    in >> N >> K;
    assert(3 <= N && N <= 1000);
    assert(1 < K && K < N);

    int cnt = 1;
    if(K % 2 == 0) {
        for(int i = 1; i <= N; ++i)
            for(int j = 1; j <= K; ++j)
                A[i][j] = cnt++;
        for(int i = 1; i <= N; ++i)
            for(int j = K + 1; j <= N; ++j)
                A[i][j] = cnt++;
    }
    else
        if(N % 2 == 0) {
            for(int i = 1; i <= N; i += 2) {
                for(int j = 1; j < K; ++j)
                    A[i][j] = cnt++;
                A[i + 1][1] = cnt++;
                A[i][K] = cnt++;
                for(int j = 2; j <= K; ++j)
                    A[i + 1][j] = cnt++;
            }
            for(int i = 1; i <= N; ++i)
                for(int j = K + 1; j <= N; ++j)
                    A[i][j] = cnt++;
        }
        else {
            for(int i = 1; i < N; i += 2) {
                for(int j = 1; j < K; ++j)
                    A[i][j] = cnt++;
                A[i + 1][1] = cnt++;
                A[i][K] = cnt++;
                for(int j = 2; j <= K; ++j)
                    A[i + 1][j] = cnt++;
            }
            for(int j = 1; j < K; ++j)
                A[N][j] = cnt++;
            A[1][K + 1] = cnt++;
            A[N][K] = cnt++;
            for(int j = K + 2; j <= N; ++j)
                A[1][j] = cnt++;
            for(int i = 2; i <= N; ++i)
                for(int j = K + 1; j <= N; ++j)
                    A[i][j] = cnt++;
        }

//    for(int i = 1; i <= N; ++i) {
//        for(int j = 1; j <= N; ++j)
//            out << A[i][j] << " ";
//        out << "\n";
//    }

    return 0;
}