Cod sursa(job #2061238)

Utilizator MihneaGhiraMihnea MihneaGhira Data 9 noiembrie 2017 00:09:33
Problema Tablete Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.02 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int n,k,v1[1001],v2[1001],v3[1001],h;
int a[1001][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";
        }
    }
    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";
        }
    }
    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++){
            if(a[i][k]%2==0)
                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";
        }
    }
    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=1;i<=n;i++){
            if(a[i][k]%2==1&&i!=n)
                swap(a[i][k],a[i+2][k-1]);
            if(i==n&&a[i][k]%2==1)
                swap(a[i][k],a[i-2][k+1]);
            v1[++h]=a[i][k-1];
            v2[h]=a[i][k];
            v3[h]=a[i][k+1];
        }
        sort(v1+1,v1+h+1);
        sort(v2+1,v2+h+1);
        sort(v3+1,v3+h+1);
        for(int i=1;i<=h;i++){
            a[i][k-1]=v1[i];
            a[i][k]=v2[i];
            a[i][k+1]=v3[i];
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                fout<<a[i][j]<<" ";
            }
            fout<<"\n";
        }
    }
    return 0;
}