Cod sursa(job #2061367)

Utilizator maria15Maria Dinca maria15 Data 9 noiembrie 2017 09:56:19
Problema Tablete Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 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=3;i<=n;i++)
        a[i-2] = v[i][k];
    sort(a+1, a+n-2+1);
    for(i=3;i<=n;i++)
        v[i][k] = a[i-2];

    for(i=1;i<=n;i++)
        a[i] = v[i][k+1];
    sort(a+1, a+n+1);
    for(i=1;i<=n;i++)
        v[i][k+1] = a[i];
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            fout<<v[i][j]<<" ";

        fout<<"\n";
    }
    return 0;


}