# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1213250 | guagua0407 | Vision Program (IOI19_vision) | C++20 | 0 ms | 0 KiB |
//#include "vision.h"
#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
void construct_network(int n, int m, int k) {
vector<int> cand;
/*for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i+k<n){
cand.push_back(add_and({i*m+j,(i+k)*m+j}));
}
if(j+k<m){
cand.push_back(add_and({i*m+j,i*m+(j+k)}));
}
}
}*/
int ass=add_xor({0,0});
vector<int> X(n),Y(m);
for(int i=0;i<n;i++){
vector<int> tmp;
for(int j=0;j<m;j++){
tmp.push_back({i*m+j});
}
X[i]=add_or(tmp);
}
for(int j=0;j<m;j++){
vector<int> tmp;
for(int i=0;i<n;i++){
tmp.push_back({i*m+j});
}
Y[j]=add_or(tmp);
}
for(int x=0;x<=1;x++){
//if(!((k-x)>=0 and (k-x)<m)) continue;
int y=k-x;
//cout<<x<<' '<<y<<'\n';
int dx,dy;
if(x==1){
vector<int> tmp;
for(int i=0;i+x<n;i++){
tmp.push_back(add_and({X[i],X[i+x]}));
}
dx=(tmp.empty()?ass:add_or(tmp));
cand.push_back(add_and({dx,add_xor(Y)}));
}
else{
vector<int> tmp;
for(int j=0;j+y<m;j++){
tmp.push_back(add_and({Y[j],Y[j+y]}));
}
dy=(tmp.empty()?ass:add_or(tmp));
cand.push_back(add_and({dy,add_xor(X)}));
}
//cand.push_back(add_and({dx,dy}));
}
if(cand.empty()){
add_xor({0,0});
}
else{
add_or(cand);
}
}