Cod sursa(job #128844)
Utilizator | Data | 27 ianuarie 2008 22:33:16 | |
---|---|---|---|
Problema | Oras | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.21 kb |
#include <cstdio>
#include <cstring>
using namespace std;
#define FIN "oras.in"
#define FOUT "oras.out"
#define MAX_N 205
int A[MAX_N][MAX_N];
int N;
void solve ( void )
{
int i, j, ng;
if (N & 1)
{
ng = 1;
while (ng < N)
{
int nod1, nod2;
nod1 = ng + 1;
nod2 = ng + 2;
A[nod1][nod2] = 1;
for (i = 1; i <= ng; ++i)
A[i][nod1] = 1;
for (i = 1; i <= ng; ++i)
A[nod2][i] = 1;
ng += 2;
}
}
else
{
if (N == 2)
A[1][2] = 1;
else
{
A[1][3] = A[1][4] = A[1][5] = 1;
A[2][1] = A[2][4] = A[2][6] = 1;
A[3][2] = A[3][5] = A[3][6] = 1;
A[4][3] = A[4][6] = 1;
A[5][2] = A[5][4] = 1;
A[6][1] = A[6][5] = 1;
ng = 6;
while (ng < N)
{
int nod1, nod2;
nod1 = ng + 1;
nod2 = ng + 2;
A[nod1][nod2] = 1;
for (i = 1; i <= ng; ++i)
A[i][nod1] = 1;
for (i = 1; i <= ng; ++i)
A[nod2][i] = 1;
ng += 2;
}
}
}
for (i = 1; i <= N; ++i)
{
for (j = 1; j <= N; ++j)
printf ("%d", A[i][j]);
printf ("\n");
}
}
int main ()
{
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
scanf ("%d", &N);
if (N == 4)
{
printf ("-1\n");
return 0;
}
solve ();
return 0;
}