Cod sursa(job #232122)

Utilizator Andrei200Andrei200 Andrei200 Data 14 decembrie 2008 19:25:54
Problema Tablete Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <stdio.h>
#include <string.h>

int frecv[1000],nr;
int A[100][100],i,j,N,K;
int par[100],p;

int main()
{
    freopen("tablete.in","r",stdin);
    scanf("%d %d", &N,&K);
    //memset(frecv,0,sizeof(frecv));
    nr=0;
    for (i=2;i<=1<<N;++i)
          if (i%2==0)
              {
                    nr++;
                    par[nr]=i;
              }
    //if (K==2) p=1;
    //else
    //if (K%2==0 && K!=2) p=K+1;
    //else 
    p=K;
    for (i=1;i<=N;++i)
         {
           A[i][K]=par[p];
           frecv[par[p]]=1;
           p++;
         }
         nr=1;
         for (i=1;i<=N;++i)
          for (j=1;j<K;++j)
            {
                   if (frecv[nr]==0)
                        {
                            A[i][j]=nr;
                            frecv[nr]=1;
                        }
                   else
                   {
                        while (frecv[nr]==1)
                        nr++;
                   A[i][j]=nr;
                   frecv[nr]=1;
                   }
                 nr++;
                }
     for (i=K+1;i<=N;++i)
          for (j=1;j<=N;++j)
            {
                   if (frecv[nr]==0)
                        {
                            A[j][i]=nr;
                            frecv[nr]=1;
                        }
                   else
                   {
                        while (frecv[nr]==1)
                        nr++;
                   A[j][i]=nr;
                   frecv[nr]=1;
                  }
                 nr++;
                }      
           
     freopen("tablete.out","w",stdout);
     for (i=1;i<=N;++i)
     {
            for (j=1;j<=N;++j)
            {
                printf("%d ", A[i][j]);
            }
            printf("\n");
     }
     return 0;
}