Cod sursa(job #243926)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 14 ianuarie 2009 11:29:52
Problema Tablete Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 2.21 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=1,j,nr=1; 
    int frecv[1000000];   
    if (N%2==1 && K%2==0)
        {
    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;      
}