Cod sursa(job #2061384)

Utilizator MihneaGhiraMihnea MihneaGhira Data 9 noiembrie 2017 10:20:06
Problema Tablete Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.03 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int n,k;
int a[1001][1001],v1[1001];
int main(){
    fin>>n>>k;
    if(n%2==0&&k%2==0){
        int x=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                fout<<++x<<" ";
            }
            fout<<"\n";
        }
        return 0;
    }

    if(n%2==1&&k%2==0){
        int x=0;
        for(int i=1;i<=n;i++){
            a[i][1]=++x;
        }
        for(int i=1;i<=n;i++){
            for(int j=2;j<=n;j++)
                a[i][j]=++x;
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++)
                fout<<a[i][j]<<" ";
            fout<<"\n";
        }
        return 0;
    }

    if(n%2==0&&k%2==1){
        int x=0;
        for(int j=1;j<=n;j++)
            for(int i=1;i<=n;i++){
                a[i][j]=++x;
            }
        for(int i=1;i<n;i+=2)
            swap(a[i][k],a[i+1][k-1]);
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++)
                fout<<a[i][j]<<" ";
            fout<<"\n";
        }
        return 0;
    }
    if(n%2==1&&k%2==1){
        int x=0;
        for(int j=1;j<=n;j++)
            for(int i=1;i<=n;i++){
                a[i][j]=++x;
            }
        for(int i=3;i<=n;i+=2)
            swap(a[i][k-1],a[i-2][k]);
        swap(a[n][k],a[n-2][k+1]);
        for(int i=3;i<=n;i++)
            v1[i-2]=a[i][k-1];
        sort(v1+1,v1+n-1);
        for(int i=3;i<=n;i++)
            a[i][k-1]=v1[i-2];
        for(int i=3;i<=n;i++)
            v1[i-2]=a[i][k];
        sort(v1+1,v1+n-1);
        for(int i=3;i<=n;i++)
            a[i][k]=v1[i-2];
        for(int i=1;i<=n;i++)
            v1[i]=a[i][k+1];
        sort(v1+1,v1+n+1);
        for(int i=1;i<=n;i++)
            a[i][k+1]=v1[i];
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++)
                fout<<a[i][j]<<" ";
            fout<<"\n";
        }
    }
    return 0;


}