Cod sursa(job #870926)

Utilizator misinozzz zzz misino Data 4 februarie 2013 09:10:02
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include<fstream>
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");
int n,k,i,j,c,a[1009][1009];
int main()
{
    f>>n>>k;
    if(!(k%2))
    {
        c=1;
        for(i=1;i<=n;++i)
        for(j=1;j<=k;++j)
        a[i][j]=c,++c;
        for(i=1;i<=n;++i)
        for(j=k+1;j<=n;++j)
        a[i][j]=c,++c;
    }
    else
    {
        if(n%2==0)
        {
            c=0;
            for(i=1;i<=n;i+=2)
            {
                for(j=1;j<k;++j)
                a[i][j]=c+j;
                a[i][k]=c+k+1;
                a[i+1][1]=c+k;
                for(j=2;j<=k;++j)
                a[i+1][j]=c+k+j;
                c+=2*k;
            }
            ++c;
            for(i=1;i<=n;++i)
            for(j=k+1;j<=n;++j)
            a[i][j]=c,++c;
        }
        else
        {
            c=0;
            for(i=1;i<=n-2;i+=2)
            {
                for(j=1;j<k;++j)
                a[i][j]=c+j;
                a[i][k]=c+k+1;
                a[i+1][1]=c+k;
                for(j=2;j<=k;++j)
                a[i+1][j]=c+k+j;
                c+=2*k;
            }
            c=(n-1)*k+1;
            for(j=1;j<k;++j)
            a[n][j]=c,++c;
            a[n][k]=c+1;
            a[1][k+1]=c;
            c+=2;
            for(i=1;i<=n;++i)
            for(j=k+1;j<=n;++j)
            if(!a[i][j])
            a[i][j]=c,++c;
        }
    }
    for(i=1;i<=n;++i,g<<'\n')
    for(j=1;j<=n;++j)
    g<<a[i][j]<<' ';
    return 0;
}