Cod sursa(job #1586639)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 1 februarie 2016 15:24:48
Problema Oras Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#define Nmax 205

using namespace std;

char a[Nmax][Nmax];
int Bad,n;

inline void Mark(int x, int y)
{
    a[x][y]='1'; a[y][x]='0';
}

inline void Solve(int st, int dr)
{
    if(st==dr) return;

    if(dr-st==5)
    {
        Mark(1,2); Mark(1,3); Mark(1,4);
        Mark(2,3); Mark(2,4); Mark(2,5);
        Mark(3,4); Mark(3,6);
        Mark(4,5); Mark(4,6);
        Mark(5,1); Mark(5,3); Mark(5,6);
        Mark(6,1); Mark(6,2);
        return;
    }

    int mij,i,j;
    if((dr-st+1)%2==0) mij=st+5;
    else mij=st;

    Solve(st,mij); Solve(mij+1,dr-1);

    for(i=st;i<=mij;++i)
        for(j=mij+1;j<dr;++j) Mark(i,j);

    for(j=mij+1;j<dr;++j) Mark(j,dr);
    for(i=st;i<=mij;++i) Mark(dr,i);
}

int main()
{
    int i,j;
    ifstream cin("oras.in");
    ofstream cout("oras.out");
    cin>>n;
    if(n==4)
    {
        cout<<"-1"; return 0;
    }
    for(i=1;i<=n;++i)
        for(j=1;j<=n;++j) a[i][j]='0';
    Solve(1,n);
    for(i=1;i<=n;++i) cout<<(a[i]+1)<<"\n";
    return 0;
}