Cod sursa(job #2594708)

Utilizator Andrei012Trache Andrei Andrei012 Data 6 aprilie 2020 15:44:11
Problema Tablete Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <bits/stdc++.h>

using namespace std;
int a[1001][1001],i,k,n;
bool vc[1000001];

int main()
{
    ifstream cin("tablete.in");
    ofstream cout("tablete.out");
    int x,j;
    cin>>n>>k;
    if(n%2==0 && k%2==0){
        x=0;
        for(i=1;i<=n;++i)
            for(j=1;j<=n;++j)
                a[i][j]=++x;
    }
    if(n%2==1 && k%2==0){
        x=0;
        for(i=1;i<=n;++i)
            for(j=1;j<=k;++j)
                a[i][j]=++x;
        for(i=1;i<=n;++i)
            for(j=k+1;j<=n;++j)
                a[i][j]=++x;
    }
    if(k%2==1){
        a[1][k]=k+1;
        vc[k+1]=1;
        x=k+1;
        for(i=2;i<=n;++i){
            if(i%2==1){
                x+=k-1;
                a[i][k]=x;
                vc[x]=1;
            }
            else{
                x+=k+1;
                a[i][k]=x;
                vc[x]=1;
            }
        }
        x=1;
        for(i=1;i<=n;++i)
            for(j=1;j<=k-1;++j){
                while(vc[x]==1 && x<=n*n)
                    x++;
                a[i][j]=x;
                vc[x]=1;
                ++x;
            }
        for(i=1;i<=n;++i)
            for(j=k+1;j<=n;++j){
                while(vc[x]==1 && x<=n*n)
                    x++;
                a[i][j]=x;
                vc[x]=1;
                ++x;
            }
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            cout<<a[i][j]<<" ";
        cout<<'\n';
    }
    return 0;
}