#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
/*
int h,w,k;
vector <int> t;
int current;
int calls=0;
void add_or(vector <int> v){
cout<<"Call No. "<<calls<<": requested or ";
for (auto&i:v) cout<<i<<' ';
cout<<endl;
calls++;
int n=v.size();
for (int i=0; i<n; i++){
if (v[i]<0||v[i]>=current){
cout<<"Invalid index provided on call and_or: "<<i<<"th element requested for "<<v[i];
exit(0);
}
}
int res=0;
for (int i=0; i<n; i++){
if (t[v[i]]==1){
res=1;
break;
}
}
t.push_back(res);
current++;
}
void add_xor(vector <int> v){
cout<<"Call No. "<<calls<<": requested xor ";
for (auto&i:v) cout<<i<<' ';
cout<<endl;
calls++;
int n=v.size();
for (int i=0; i<n; i++){
if (v[i]<0||v[i]>=current){
cout<<"Invalid index provided on call and_or: "<<i<<"th element requested for "<<v[i];
exit(0);
}
}
int res=0;
for (int i=0; i<n; i++){
if (t[v[i]]==1){
res^=1;
}
}
t.push_back(res);
current++;
}
void add_and(vector <int> v){
cout<<"Call No. "<<calls<<": requested and ";
for (auto&i:v) cout<<i<<' ';
cout<<endl;
calls++;
int n=v.size();
if (n>10001){
cout<<"Too many instructions on call and_or\n";
exit(0);
}
for (int i=0; i<n; i++){
if (v[i]<0||v[i]>=current){
cout<<"Invalid index provided on call and_or: "<<i<<"th element requested for "<<v[i];
exit(0);
}
}
int res=1;
for (int i=0; i<n; i++){
if (t[v[i]]==0){
res=0;
break;
}
}
t.push_back(res);
current++;
}
void add_not(int v){
cout<<"Call No. "<<calls<<": requested not ";
cout<<v<<endl;
calls++;
if (v<0||v>=current){
cout<<"Invalid index provided on call and_or: "<<0<<"th element requested for "<<v;
exit(0);
}
int res=1;
if (t[v]==1){
res=0;
}
t.push_back(res);
current++;
}*/
void construct_network(int H,int W,int K){
if (K==1){
for (int i=0; i<H; i++){
vector <int> v;
for (int j=0; j<W; j++) v.push_back(i*W+j);
add_or(v);
}
for (int j=0; j<W; j++){
vector <int> v;
for (int i=0; i<H; i++) v.push_back(i*W+j);
add_or(v);
}
for (int i=0; i<H-1; i++){
vector <int> v;
v.push_back(H*W+i);
v.push_back(H*W+i+1);
add_and(v);
}
for (int i=0; i<W-1; i++){
vector <int> v;
v.push_back(H*W+H+i);
v.push_back(H*W+H+i+1);
add_and(v);
}
vector <int> vv;
for (int i=0; i<H+W-2; i++) vv.push_back(H*W+H+W+i);
add_or(vv);
vector <int> ww;
for (int i=0; i<H+W; i++) ww.push_back(H*W+i);
add_xor(ww);
vector <int> xx;
xx.push_back(H*W+H+W+H+W-2);
xx.push_back(H*W+H+W+H+W-1);
add_and(xx);
return;
} else if (max(H,W)<=100||min(H,W)==1){
vector <int> initv1,initv2,initw;
int initnot;
for (int i=0; i<H; i++){
for (int j=0; j<W; j++){
vector <int> v;
for (int x=i,y=j-K; x!=i-K&&y!=j; x--,y++){
if (x>=0&&x<H&&y>=0&&y<W) v.push_back(x*W+y);
}
for (int x=i-K,y=j; x!=i&&y!=j+K; x++,y++){
if (x>=0&&x<H&&y>=0&&y<W) v.push_back(x*W+y);
}
for (int x=i,y=j+K; x!=i+K&&y!=j; x++,y--){
if (x>=0&&x<H&&y>=0&&y<W) v.push_back(x*W+y);
}
for (int x=i+K,y=j; x!=i&&y!=j-K; x--,y--){
if (x>=0&&x<H&&y>=0&&y<W) v.push_back(x*W+y);
}
if (v.empty()){
add_xor(initv1);
add_xor(initv2);
add_not(initnot);
add_xor(initw);
continue;
}
add_xor(v);
if (!i&&!j){
initv1=v;
}
v.push_back(i*W+j);
add_xor(v);
add_not(H*W+4*(i*W+j)+1);
vector <int> w;
w.push_back(H*W+4*(i*W+j));
w.push_back(H*W+4*(i*W+j)+2);
add_and(w);
if (!i&&!j){
initv2=v;
initnot=H*W+4*(i*W+j)+1;
initw=w;
}
}
}
vector <int> f;
for (int i=0; i<H; i++){
for (int j=0; j<W; j++) f.push_back(H*W+4*(i*W+j)+3);
}
add_or(f);
return;
}
vector <int> v;
for (int x=K; x>=0; x--){
int y=K-x;
if (x>=0&&x<H&&y>=0&&y<W) v.push_back(x*W+y);
}
add_or(v);
return;
}
/*
int main(){
cin>>h>>w>>k;
for (int i=0; i<h*w; i++){
int v;
cin>>v;
t.push_back(v);
}
current=h*w;
construct_network(h,w,k);
for (auto&i:t) cout<<i<<' ';
cout<<endl;
}
*/
Compilation message
vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:149:16: warning: 'initnot' may be used uninitialized in this function [-Wmaybe-uninitialized]
149 | add_not(initnot);
| ~~~~~~~^~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Incorrect |
1 ms |
364 KB |
on inputs (0, 1), (0, 2), expected 0, but computed 1 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Incorrect |
1 ms |
364 KB |
on inputs (0, 1), (0, 2), expected 0, but computed 1 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Incorrect |
1 ms |
364 KB |
on inputs (0, 1), (0, 2), expected 0, but computed 1 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Incorrect |
1 ms |
364 KB |
on inputs (0, 1), (0, 2), expected 0, but computed 1 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Incorrect |
2 ms |
396 KB |
on inputs (0, 1), (0, 2), expected 0, but computed 1 |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
396 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
0 ms |
364 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
2 ms |
492 KB |
Output is correct |
9 |
Correct |
1 ms |
364 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
1 ms |
364 KB |
Output is correct |
12 |
Correct |
1 ms |
364 KB |
Output is correct |
13 |
Correct |
1 ms |
364 KB |
Output is correct |
14 |
Correct |
1 ms |
364 KB |
Output is correct |
15 |
Correct |
1 ms |
364 KB |
Output is correct |
16 |
Correct |
1 ms |
364 KB |
Output is correct |
17 |
Correct |
1 ms |
364 KB |
Output is correct |
18 |
Correct |
1 ms |
364 KB |
Output is correct |
19 |
Correct |
1 ms |
364 KB |
Output is correct |
20 |
Correct |
6 ms |
748 KB |
Output is correct |
21 |
Correct |
2 ms |
364 KB |
Output is correct |
22 |
Correct |
1 ms |
500 KB |
Output is correct |
23 |
Correct |
1 ms |
364 KB |
Output is correct |
24 |
Correct |
8 ms |
748 KB |
Output is correct |
25 |
Correct |
1 ms |
364 KB |
Output is correct |
26 |
Correct |
1 ms |
364 KB |
Output is correct |
27 |
Correct |
10 ms |
1132 KB |
Output is correct |
28 |
Correct |
2 ms |
364 KB |
Output is correct |
29 |
Correct |
1 ms |
364 KB |
Output is correct |
30 |
Correct |
1 ms |
364 KB |
Output is correct |
31 |
Correct |
1 ms |
364 KB |
Output is correct |
32 |
Correct |
1 ms |
384 KB |
Output is correct |
33 |
Correct |
1 ms |
492 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
1132 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
2 ms |
492 KB |
Output is correct |
5 |
Correct |
2 ms |
364 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
7 |
Correct |
5 ms |
748 KB |
Output is correct |
8 |
Correct |
6 ms |
748 KB |
Output is correct |
9 |
Correct |
10 ms |
1132 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
1 ms |
364 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Incorrect |
1 ms |
364 KB |
on inputs (0, 1), (0, 2), expected 0, but computed 1 |
3 |
Halted |
0 ms |
0 KB |
- |