Cod sursa(job #1891868)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 24 februarie 2017 13:27:30
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
using namespace std;
struct me
{
    int x;
    int y;
    int m;
};
me mem;
int a[1001][1001];
int main()
{
    freopen("tablete.in","r",stdin);
    freopen("tablete.out","w",stdout);
    int n,k,i,j,ok=0,q;
    scanf("%d%d",&n,&k);
    for(i=1,j=1; i<=n*k; j++,i++)
    {
        if(i%2==0&&mem.m==1)
            a[mem.x][mem.y]=i,i++,mem.m=0;
        if(i%2==1&&j%k==0)
            mem.x=j/k,mem.y=k,mem.m=1,j++;
        if(j%k!=0)
            a[j/k+1][j%k]=i;
        else a[j/k][k]=i;
    }
    if(mem.m)
        a[n][k]=n*k+1,a[1][k+1]=n*k,ok=1;
    if(ok==1)
    {
        j=n*k+2;
        for(i=1; i<=n; i++)
        {
            for(q=k+1; q<=n; q++)
                if(i!=1||q!=k+1)
                    a[i][q]=j,j++;
        }
    }
    else
    {
        j=n*k+1;
        for(i=1; i<=n; i++)
        {
            for(q=k+1; q<=n; q++)
                a[i][q]=j,j++;
        }
    }
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=n; j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    return 0;
}