Cod sursa(job #2215078)

Utilizator felixiPuscasu Felix felixi Data 20 iunie 2018 23:13:01
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;

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

int N, K;
int v[1002][1002];
bitset<1002*1002> bs;
bitset<1002*1002> used;

int main()
{
    in >> N >> K;
    ///for( int i = 1;  i <= N*N;  ++i ) pq.push(i);
    int ind = 1;
    for( int i = 1;  i <= N;  ++i ) {
        for( int j = 1;  j < K;  ++j ) {
            while(used[ind]) ++ind;
            v[i][j] = ind;
            bs[ v[i][j] ].flip();
            used[ind].flip();
            ++ind;
        }
        int el = 0;
        if( ind % 2 ) {
            el = ind;
            ++ind;
        }
        v[i][K] = ind;
        bs[ v[i][K] ].flip();
        used[ind].flip();
        ++ind;
        if(el)
            ind = el;
    }
    ind = N * N;
    for( int col = N;  col > K;  --col ) {
        for( int line = N;  line >= 1;  --line ) {
            while( bs[ind] )
                --ind;
            v[line][col] = ind;
            bs[ind].flip();
        }
    }
    for( int i = 1;  i <= N;  ++i ) for( int j = 1;  j <= N;  ++j ) out << v[i][j] << " \n"[j == N];
    return 0;
}