Cod sursa(job #1741846)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 15 august 2016 12:06:48
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.83 kb
#include<fstream>
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");
int n,k,a[1002][1002];
int main()
{
    f>>n>>k;
    if(k%2==0)
    {
        int q=1;
        for(int i=1;i<=n;++i)
            for(int j=1;j<=k;++j){
                a[i][j]=q;
                ++q;
            }
        for(int i=1;i<=n;++i)
            for(int j=k+1;j<=n;++j)
            {
                a[i][j]=q;
                ++q;
            }
    }
    else
    {
        if(n%2==0)
        {
            int nr=1;
            for(int i=1;i<n;i+=2)
            {
                for(int j=1;j<=k-1;++nr,++j)
                    a[i][j]=nr;
                a[i][k]=nr+1;
                a[i+1][1]=nr;
                nr+=2;
                for(int j=2;j<=k;++nr,++j)
                    a[i+1][j]=nr;
            }
            nr=n*k+1;
            for(int i=1;i<=n;++i)
                for(int j=k+1;j<=n;++j,++nr)
                    a[i][j]=nr;
        }
        else
        {
            int nr=1;
            for(int i=1;i<=n-2;i+=2)
            {
                for(int j=1;j<=k-1;++nr,++j)
                    a[i][j]=nr;
                a[i][k]=nr+1;
                a[i+1][1]=nr;
                nr+=2;
                for(int j=2;j<=k;++nr,++j)
                    a[i+1][j]=nr;
            }
            nr=(n-1)*k+1;
            for(int i=1;i<k;++i,++nr)
                a[n][i]=nr;
            a[n][k]=nr+1;
            nr=n*k+2;
            a[1][k+1]=n*k;
            for(int j=k+2;j<=n;++j,++nr)
                a[1][j]=nr;
            for(int i=2;i<=n;++i)
                for(int j=k+1;j<=n;++j,++nr)
                    a[i][j]=nr;
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=n;++j)
            g<<a[i][j]<<" ";
        g<<'\n';
    }
    return 0;
}