Cod sursa(job #243921)

Utilizator Andrei200Andrei200 Andrei200 Data 14 ianuarie 2009 11:26:41
Problema Tablete Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 2.65 kb
#include <stdio.h>      
     
int A[1005][1005];        
     
int main()      
{      
    int N,K;   
    freopen("tablete.in","r",stdin);      
    scanf("%d %d", &N,&K);      
    int p;   
    if (N%2==0 && K%2==1 && (K/2)%2==0)   
            p=(N*K)-(N+(K/2)+2);   
      else  
      if (N%2==1 && K%2==1 && (K/2)%2==0)   
            p=(N*K)-(N+(K/2));   
      else p=(N*K)-(N+(K/2)+1);   
    int i,j1,nr1;  
    int j,nr=1; 
    int frecv[1000000];   
    if (N%2==1 && K%2==0)
        {
            nr1=1;
    for (i=1;i<=N;++i)
    for (j1=1;j1<=K;++j1)
         {
                A[i][j1]=nr1;
                nr1++;
            }
    for (i=1;i<=N;++i)
    for (j1=K+1;j1<=N;++j1)
         {
                A[i][j1]=nr1;
                nr1++;
            }
        }
        else
        {   
    for (i=1;i<=N;++i)      
         {      
           A[i][K]=p;      
           frecv[p]=1;   
           p+=2;      
         }     
       
    if (K%2==0)   
         {   
                for (i=1;i<=N;++i)   
                     for (j=1;j<=N;++j)   
                          {   
                            A[i][j]=nr;   
                            nr++;   
                          }   
         }   
      else  
      {            
    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;      
}