#include <bits/stdc++.h>
#include "vision.h"
using namespace std;
void construct_network(int H, int W, int K)
{
vector<int> linii,coloane;
vector<int> sus(H+2),jos(H+2);
vector<int> st(W+2),dr(W+2);
for(int lin=0;lin<H;lin++)
{
vector<int> aux;
if(lin-1 >= 0)
aux.push_back(sus[lin-1]);
for(int i=0;i<W;i++)
aux.push_back(lin*W+i);
sus[lin] = add_or(aux);
}
for(int lin=H-1;lin>=0;lin--)
{
vector<int> aux;
if(lin+1 < H)
aux.push_back(jos[lin+1]);
for(int i=0;i<W;i++)
aux.push_back(lin*W+i);
jos[lin] = add_or(aux);
}
for(int lin=1;lin<H;lin++)
{
linii.push_back(add_and({sus[lin-1],jos[lin]}));
}
for(int col=0;col<W;col++)
{
vector<int> aux;
if(col-1 >= 0)
aux.push_back(st[col-1]);
for(int i=0;i<H;i++)
aux.push_back(i*W+col);
st[col] = add_or(aux);
}
for(int col=W-1;col>=0;col--)
{
vector<int> aux;
if(col+1 < W)
aux.push_back(dr[col+1]);
for(int i=0;i<H;i++)
aux.push_back(i*W+col);
dr[col] = add_or(aux);
}
for(int col=1;col<W;col++)
{
coloane.push_back(add_and({st[col-1],dr[col]}));
}
vector<int> combinat;
for(int x:linii)
combinat.push_back(x);
for(int x:coloane)
combinat.push_back(x);
int zero = add_and({combinat[0],add_not(combinat[0])});
vector<int> cnt;
for(int lun=0;(1<<lun)<=(H+W-2);lun++)
cnt.push_back(zero);
//for(int x:cnt) cerr<<x<<" zzz\n";
for(int x:combinat)
{
vector<int> newcnt;
int pref = x;
for(int i=0;i<cnt.size();i++)
{
newcnt.push_back(add_xor({pref,cnt[i]}));
pref = add_and({pref,cnt[i]});
}
cnt = newcnt;
}
vector<int> rez;
for(int i=0;i<cnt.size();i++)
if((1<<i)&K)
rez.push_back(cnt[i]);
else
rez.push_back(add_not(cnt[i]));
add_and(rez);
}
/*
2 2 1
0 0 1 1
0 0 0 1
0 0 1 0
-1
2 3 3
0 0 1 2
1 0 0 2
0 0 1 1
-1
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |