Cod sursa(job #2061070)

Utilizator maria15Maria Dinca maria15 Data 8 noiembrie 2017 21:52:15
Problema Tablete Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

short n, i, k, j;
int v[1001][1001], a[1002], nr;

int main(){
    fin>>n>>k;
    if(n%2 == 0 && k%2 == 0){
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++){
                nr++;
                fout<<nr<<" ";
            }
            fout<<"\n";
        }
        return 0;
    }

    if(n%2 == 1 && k%2 == 0){
        for(i=1;i<=n;i++){
            fout<<i<<" ";
            for(j=2;j<=n;j++)
                fout<<i*4+j<<" ";
            fout<<"\n";
        }
        return 0;
    }

    if(n%2 == 0 && k%2 == 1){
        for(j=1;j<=n;j++)
            for(i=1;i<=n;i++){
                nr++;
                v[i][j] = nr;
            }
        for(i=1;i<n;i+=2)
            swap(v[i][k], v[i+1][k-1]);
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++)
                fout<<v[i][j]<<" ";
            fout<<"\n";
        }
        return 0;
    }

    for(j=1;j<=n;j++)
        for(i=1;i<=n;i++){
            nr++;
            v[i][j] = nr;
        }
    for(i=3;i<=n;i+=2)
        swap(v[i][k-1], v[i-2][k]);
    swap(v[n][k], v[n-2][k+1]);
    for(i=3;i<=n;i++)
        a[i-2] = v[i][k-1];
    sort(a+1, a+n-2+1);
    for(i=3;i<=n;i++)
        v[i][k-1] = a[i-2];
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            fout<<v[i][j]<<" ";
        fout<<"\n";
    }
    return 0;


}