Cod sursa(job #10423)

Utilizator crawlerPuni Andrei Paul crawler Data 28 ianuarie 2007 14:00:10
Problema Oras Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>

int n , i, j, k;
int x[256][256], v[256];

int main()
{
  freopen("oras.in","r",stdin);
  freopen("oras.out","w",stdout);

  scanf("%i", &n);

  if(n==4)
   {
     printf("-1\n");
     return 0;
   }

  if( ( (n % 2 ) == 0)  && (n>4) && 1==2)      
   {
    n+=3;
    for(i=1;i<=n;++i)
     v[i]=(i+1)%2;

    for(i=1;i<=n;++i)
     v[i+n]=v[i];

    for(i=0;i<n;++i)
     {
      k=0;
      for(j=n-i+1;j<=n;++j)
       x[i][++k]=v[j];

      for(j=1;j<=n-i;++j)
       x[i][++k]=v[j];
     }

    n-=3;
    
    for(i=n-3;i<=n;++i)
     for(j=1;j<=n;++j)
     x[i][j]=x[j][i]=0;
    x[n-1][n]=1;
    x[n-2][n]=1;
    x[n-2][n-1]=1;
    x[n-1][n-3]=1;

    for(i=1;i<=n-3;++i)
     x[i][n-2]=1;

    for(i=1;i<=n-4;++i)
     x[i][n-1]=1;

    for(i=1;i<=n-3;++i)
     x[n][i]=1;

    for(i=0;i<n;++i)
     {
      for(j=1;j<=n;++j)
       printf("%i",x[i][j]);
      printf("\n");
     }
    return 0;
   }
    
  if( (n % 2 ) == 1 ) 
   {
    for(i=1;i<=n;++i)
     v[i]=(i+1)%2;

    for(i=1;i<=n;++i)
     v[i+n]=v[i];

    for(i=0;i<n;++i)
     {
      for(j=n-i+1;j<=n;++j)
       printf("%i",v[j]);

      for(j=1;j<=n-i;++j)
       printf("%i",v[j]);

      printf("\n");
     }
     return 0;
   }  
}