Pagini recente » Cod sursa (job #1848462) | Cod sursa (job #2480163) | Cod sursa (job #392283) | Cod sursa (job #792229) | Cod sursa (job #751283)
Cod sursa(job #751283)
#include<stdio.h>
#include<assert.h>
#include<vector>
#include<algorithm>
using namespace std;
int verts, lolno, graph[222][222];
vector<int> lulz;
void read(){
assert(freopen("oras.in", "r", stdin));
scanf("%d", &verts);
for(int i = 1; i <= verts; ++i)
lulz.push_back(i);
}
void solve(vector<int> m){
if(m.size() == 1)
return;
if(m.size() == 2){
lolno = 1;
return;
}
vector<int> one, two;
int good = m.back();
m.pop_back();
for(int i = 0; i < m.size() / 2; ++i){
one.push_back(m[i]);
graph[good][m[i]] = 1;
}
for(int i = m.size() / 2; i < m.size(); ++i){
two.push_back(m[i]);
graph[m[i]][good] = 1;
}
for(int i = 0; i < one.size(); ++i)
for(int j = 0; j < two.size(); ++j)
graph[one[i]][two[j]] = 1;
solve(one);
solve(two);
}
void write(){
assert(freopen("oras.out", "w", stdout));
if(lolno)
printf("-1");
else
for(int i = 1; i <= verts; ++i){
for(int j = 1; j <= verts; ++j)
printf("%d", graph[i][j]);
printf("\n");
}
}
int main(){
read();
solve(lulz);
write();
return 0;
}