Cod sursa(job #231658)

Utilizator megabyteBarsan Paul megabyte Data 14 decembrie 2008 12:47:04
Problema Tablete Scor 100
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 5-8 Marime 1.18 kb
#include <cstdio>
#define NMAX 1024
#define LMAX 1000002
#define INF "tablete.in"
#define OUF "tablete.out"
using namespace std;

int a[NMAX][NMAX]={0};
char used[LMAX]={0};

int main()
{
    int n,k,i,j,c;
    FILE *in,*out;

    in=fopen(INF,"r");
    out=fopen(OUF,"w");

    fscanf(in,"%d%d",&n,&k);
    for(c=1,i=1;i<=n;++c)
        if((c%2==0)&&((c-i)>=i*(k-1)))
        {
            a[i][k]=c;
            used[c]=1;
            ++i;
        }

    for(c=1,i=1;i<=n;++i)
        for(j=1;j<k;++j)
        if(!used[c])
        {
            a[i][j]=c;
            used[c++]=1;
        }
            else
            {
                while(used[c]) ++c;
                a[i][j]=c;
                used[c++]=1;
            }

    for(c=1,i=1;i<=n;++i)
        for(j=k+1;j<=n;++j)
        if(!used[c])
        {
            a[i][j]=c;
            used[c++]=1;
        }
            else
            {
                while(used[c]) ++c;
                a[i][j]=c;
                used[c++]=1;
            }
    for(i=1;i<=n;++i,fprintf(out,"\n"))
        for(j=1;j<=n;++j) fprintf(out,"%d ",a[i][j]);

    fclose(in);fclose(out);
    return 0;
}