Cod sursa(job #1787192)

Utilizator ArambasaVlad Arambasa Arambasa Data 24 octombrie 2016 11:58:43
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream in ("oras.in");
ofstream out ("oras.out");
const int NMax = 205;
int Semaforisoara[NMax][NMax],n,s;
void PreImpar()
{
    Semaforisoara[1][2]=Semaforisoara[2][3]=Semaforisoara[3][1]=1;
}
void PrePar()
{
    Semaforisoara[1][2]=Semaforisoara[1][4]=Semaforisoara[2][5]=1;
    Semaforisoara[5][4]=Semaforisoara[6][1]=Semaforisoara[6][5]=1;
    Semaforisoara[2][6]=Semaforisoara[3][1]=Semaforisoara[3][2]=1;
    Semaforisoara[4][6]=Semaforisoara[5][1]=Semaforisoara[5][3]=1;
    Semaforisoara[3][6]=Semaforisoara[4][2]=Semaforisoara[4][3]=1;
}
void Read()
{
    in>>n;
}
void Solve()
{
    //CAZ IMPOSIBIL
    if (n==4) {
        out<<"-1\n";
        exit(0);
    }

    //PREGATESC PUNCTUL DE START
    if (n%2==0)
        PrePar(),s=7;
    else if (n%2==1)
        PreImpar(),s=4;

    //I SOLVE IT:
    for (int i=s;i<n;i+=2)
    {
        Semaforisoara[i][i+1]=1;
        for (int j=1;j<=i-1;j++)
        {
            Semaforisoara[i+1][j]=1;
            Semaforisoara[j][i]=1;
        }
    }
}
void Print()
{
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
        {
            out<<Semaforisoara[i][j];
        }
        out<<"\n";
    }
}
int main()
{
    Read();
    Solve();
    Print();
    return 0;
}