Cod sursa(job #457847)

Utilizator vladiiIonescu Vlad vladii Data 21 mai 2010 19:01:03
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <iostream>
using namespace std;
#define nmax 210

int N, A[nmax][nmax], B[nmax][nmax];

int main() {
    FILE *f1=fopen("oras.in", "r"), *f2=fopen("oras.out", "w");
    int i, j, p;
    fscanf(f1, "%d\n", &N);
    if(N > 4) {
         A[1][2] = A[1][4] = A[2][3] = A[2][5] = A[3][1] = A[3][4] = A[4][2] = A[4][5] = A[5][1] = A[5][3] = 1;
         B[1][2] = B[1][4] = B[2][3] = B[2][5] = B[3][1] = B[3][4] = B[4][2] = B[4][5] = B[5][1] = B[5][3] = 1;
         B[6][1] = B[2][6] = B[3][6] = B[6][4] = B[6][5] = 1;
    }
    p = 7;
    while(p<=N) {
         //A = imparele
         //B = parele
         if(p % 2 == 1) {
              //adaug nodurile p-1, p
              A[p-1][p] = 1;
              for(i=1; i<=p-2; i++) {
                   A[i][p-1] = 1;
                   A[p][i] = 1;
              }
         }
         else {
              //adaug nodurile p-1, p
              B[p-1][p] = 1;
              for(i=1; i<=p-2; i++) {
                   B[i][p-1] = 1;
                   B[p][i] = 1;
              }
         }
         p++;
    }
    if(N == 3) {
         fprintf(f2, "010\n001\n100\n");
    }
    else if(N == 4) {
         fprintf(f2, "-1\n");
    }
    else if(N % 2 == 1) {
         for(i=1; i<=N; i++) {
              for(j=1; j<=N; j++) {
                   fprintf(f2, "%d", A[i][j]);
              }
              fprintf(f2, "\n");
         }
    }
    else {
          for(i=1; i<=N; i++) {
              for(j=1; j<=N; j++) {
                   fprintf(f2, "%d", B[i][j]);
              }
              fprintf(f2, "\n");
         }
    }
    fclose(f1); fclose(f2);
    return 0;
}