Cod sursa(job #1247681)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 23 octombrie 2014 12:24:14
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>

int a[201][201];

void fill(int n) {
  if (n == 3) {
    // Simple cycle.
    a[0][1] = 1;
    a[1][2] = 1;
    a[2][0] = 1;
  } else if (n == 6) {
    // Double cycle with collector.
    a[0][1] = a[1][2] = a[2][0] = 1;
    a[1][3] = a[3][4] = a[4][1] = 1;
    a[0][3] = a[4][2] = 1;
    a[5][3] = a[5][4] = 1;
    a[3][2] = a[4][0] = 1;
    a[5][1] = a[0][5] = a[2][5] = 1;
  } else {
    fill(n - 2);
    // Add in a cycle.
    a[n - 2][n - 1] = 1;
    for (int i = 0; i < n - 2; ++i) {
      a[i][n - 2] = a[n - 1][i] = 1;
    }
  }
}

int main()
{
  std::ifstream in("oras.in");
  std::ofstream out("oras.out");

  int n;
  in >> n;

  if (n == 4) {
    out << "-1\n";
  } else {
    fill(n);
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        out << a[i][j];
      }
      out << "\n";
    }
  }

  in.close();
  out.close();

  return 0;
}