Cod sursa(job #1838056)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 30 decembrie 2016 22:01:49
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <cstdio>
#define MAXN 220

using namespace std;

int n;
int mat[MAXN][MAXN];

void solve(int n)
{
	if (n <= 1)
		return;
    for (int i = 1; i <= n-2; i++) {
		mat[n][i] = 1;
		mat[i][n-1] = 1;
    }
    mat[n-1][n] = 1;
    solve(n-2);
}

void solve2()
{
    mat[1][2] = mat[2][3] = mat[3][1] = 1;
	mat[2][4] = mat[4][5] = mat[5][2] = 1;
	mat[1][4] = mat[5][3] = 1;
	mat[6][4] = mat[6][5] = 1;
	mat[4][3] = mat[5][1] = 1;
	mat[6][2] = mat[1][6] = mat[3][6] = 1;

    for (int i = 7; i <= n; i += 2)
	{
        for (int j = 1; j < i; j++)
		{
            mat[j][i] = 1;
            mat[i+1][j] = 1;
		}
		mat[i][i+1] = 1;
	}
}

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

	scanf("%d", &n);
    if (n & 1)
		solve(n);
    else {
		if (n < 6) {
			printf("-1");
			return 0;
		}
		solve2();
    }
    for (int i = 1; i <= n; i++, printf("\n"))
			for (int j = 1; j <= n; j++)
				printf("%d", mat[i][j]);

	return 0;
}