Cod sursa(job #1963059)

Utilizator robx12lnLinca Robert robx12ln Data 12 aprilie 2017 11:39:06
Problema Tablete Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include<fstream>
#include<deque>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int n, k, nr, a[1005][1005];
deque<int> d;
int main(){
    fin >> n >> k;
    nr = 1;
    if( k % 2 == 0 ){
        for( int i = 1; i <= n; i++ ){
            for( int j = 1; j <= n; j++ ){
                fout << nr << " ";
                nr++;
            }
            fout << "\n";
        }
    }else{
        for( int i = 1; i <= n * n; i++ ){
            d.push_back( i );
        }
        for( int i = 1; i <= n; i++ ){
            for( int j = 1; j <= n; j++ ){
                a[i][j] = d.front();
                d.pop_front();
                if( j == k ){
                    if( n % 2 == 0 ){
                        nr = a[i][j];
                        a[i][j] = d.front();
                        d.pop_front();
                    }else{
                        if( i % 2 == 1 ){
                            nr = a[i][j];
                            a[i][j] = d.front();
                            d.pop_front();
                        }
                    }
                }
            }
            if( n % 2 == 0 )
                d.push_front(nr);
            else
                if( i % 2 == 1 ){
                    d.push_front(nr);
                }
        }
        for( int i = n; i >= k; i-- ){
            a[n][i] = a[n][i - 1];
        }
        a[n][k - 1] = a[n - 1][n];
        a[n - 1][n] = d.front();
        for( int i = 1; i <= n; i++ ){
            for( int j = 1; j <= n; j++ ){
                fout << a[i][j] << " ";
            }
            fout << "\n";
        }
    }
    return 0;
}