Cod sursa(job #2039640)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 14 octombrie 2017 18:43:50
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <bits/stdc++.h>

const int MAXN = 200;

bool ok[MAXN + 1][MAXN + 1];

int main() {
    FILE *fi, *fout;
    int i, j, n;
    fi = fopen("oras.in" ,"r");
    fout = fopen("oras.out" ,"w");
    fscanf(fi,"%d " ,&n);
    if(n == 1)
        fprintf(fout,"1");
    else if(n == 2 || n == 4)
        fprintf(fout,"-1");
    else {
        if(n % 2 == 1) {
            ok[1][2] = ok[2][3] = ok[3][1] = 1;
            for(i = 5; i <= n; i += 2) {
                ok[i][i - 1] = 1;
                for(j = i - 2; j >= 1; j--) {
                    ok[i - 1][j] = 1;
                    ok[j][i] = 1;
                }
            }
        }
        else {
            ok[1][2] = ok[1][6] = ok[2][3] = ok[2][4] = ok[3][1] = ok[3][6] = ok[4][1] = ok[4][3] = ok[4][5] = ok[5][1] = ok[5][2] = ok[5][3] = ok[6][2] = ok[6][4] = ok[6][5] = 1;
            for(i = 8; i <= n; i += 2) {
                ok[i][i - 1] = 1;
                for(j = i - 2; j >= 1; j--) {
                    ok[i - 1][j] = 1;
                    ok[j][i] = 1;
                }
            }
        }
        for(i = 1; i <= n; i++) {
            for(j = 1; j <= n; j++)
                fprintf(fout,"%d" ,ok[i][j]);
            fprintf(fout,"\n");
        }
    }
    fclose(fi);
    fclose(fout);
    return 0;
}