Cod sursa(job #767929)

Utilizator maritimCristian Lambru maritim Data 15 iulie 2012 14:31:15
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>

FILE *f = fopen("oras.in","r");
FILE *g = fopen("oras.out","w");

#define MaxN 210

int N;
char A[MaxN][MaxN];

void citire(void)
{
	fscanf(f,"%d",&N);
}

inline int Pozitie(int a)
{
	if(a%N == 0)
		return N;
		
	return a%N;
}

void Rezolvare(void)
{
	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++)
			A[i][j] = '0';
			
	if(N&1)
		for(int i=1;i<=N;i++)
			for(int j=1,k = 1;k<=N/2;j+=2,k++)
				A[i-1][Pozitie(i+j)-1] = '1';
	else
	{
		A[0][1] = A[0][5] = A[1][2] = A[1][3] = A[1][5] = A[2][0] = A[2][3] 
			= A[2][5] = A[3][0] = A[3][4] = A[4][0] = A[4][1] = A[4][2] = A[5][3] = A[5][4] = '1';
		for(int i=7;i<=N;A[i-1][i] = '1',i+=2)
			for(int j=1;j<i;j++)
				A[j-1][i-1] = '1';
				
		for(int i=8;i<=N;i+=2)
			for(int j=1;j<i-1;j++)
				A[i-1][j-1] = '1';
	}
}

int main()
{
	citire();
	Rezolvare();
	
	if(N==4)
		fprintf(g,"-1\n");
	else
		for(int i=0;i<N;i++)
			fprintf(g,"%s\n",A[i]);
}