Cod sursa(job #234047)

Utilizator Andrei200Andrei200 Andrei200 Data 19 decembrie 2008 21:43:34
Problema Tablete Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.96 kb
#include <stdio.h>   
  
int A[1000][1000],N,K;   
  
int main()   
{   
   freopen("tablete.in","r",stdin);   
    scanf("%d %d", &N,&K);   
    int p;
    if (K%2==0 && (N%2==0 || N%2==1))
         p=K;
        else
    if (N%2==0 && K%2==1)
        {
            if ((K/2)%2==0) p=(N*K)-(N+(K/2)+2);
                else p=(N*K)-(N+(K/2)+1);
        }
        else
        {
             if ((K/2)%2==0) p=(N*K)-(N+(K/2));
                else p=(N*K)-(N+(K/2))+1;
      }
         
    int frecv[100000];
    int i;
    for (i=1;i<=N;++i)   
         {   
           A[i][K]=p;   
           frecv[p]=1;   
           p+=2;   
         }   
    int nr=1,j;
    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++;
                      }
              nr++;   
              for (i=1;i<=N;++i)   
              for (j=K+1;j<=N;++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++;
              }   
     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;   
}