Cod sursa(job #519284)

Utilizator AndreyPAndrei Poenaru AndreyP Data 4 ianuarie 2011 20:28:30
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#define N 210

int n;
char a[N][N];

inline void trei() {
	a[1][2] = '1';
	a[2][3] = '1';
	a[3][1] = '1';
}

inline void sase() {
	a[1][2] = a[1][3] = a[1][5] = '1';
	a[2][3] = a[2][4] = a[2][6] = '1';
	a[3][4] = a[3][5] = '1';
	a[4][1] = a[4][5] = a[4][6] = '1';
	a[5][2] = a[5][6] = '1';
	a[6][1] = a[6][3] = '1';
}

inline void rezolva(int i) {
	for(; i<=n; ++i) {
		a[i][i+1] = '1';
		for(int j=1; j<i; ++j)
			a[j][i] = '1';
		++i;
		for(int j=1; j<i; ++j)
			a[i][j] = '1';
		a[i][i-1] = '0';
	}
}

inline void scrie() {
	for(int i=1; i<=n; ++i) {
		a[i][n+1] = '\n';
		a[i][n+2] = '\0';
		fputs(a[i]+1,stdout);
	}
}

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

	scanf("%d",&n);
	for(int i=1; i<=n; ++i) {
		for(int j=1; j<=n; ++j)
			a[i][j] = '0';
	}

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

	if((n&1)==1) {
		trei();
		rezolva(4);
	}
	else {
		sase();
		rezolva(7);
	}

	scrie();
	return 0;
}