Cod sursa(job #1586603)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 1 februarie 2016 14:30:56
Problema Oras Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 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(Bad || st==dr) return;
    if(dr-st==1)
    {
        Bad=1; return;
    }
    int mij=(st+dr-1)/2,i,j;
    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;
    for(i=1;i<=n;++i) a[i][i]='0';
    Solve(1,n);
    if(Bad) cout<<"-1\n";
    else
        for(i=1;i<=n;++i) cout<<(a[i]+1)<<"\n";
    return 0;
}