# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1050532 | Kel_Mahmut | Vision Program (IOI19_vision) | C++14 | 45 ms | 9068 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "vision.h"
#include <bits/stdc++.h>
#define pb push_back
#define endl ("\n")
#define all(aa) aa.begin(), aa.end()
typedef long long ll;
using namespace std;
void construct_network(int h, int w, int k) {
function<int(int, int)> f = [&](int a, int b){
return a * w + b;
};
int maxdigit = 10;
vector<int> xdigit(maxdigit);
for(int dig = 1; dig <= maxdigit; dig++){
int num = 1 << dig;
int lst = num / 2;
vector<vector<int>> query(num);
for(int i = 0; i < h; i++){
for(int j = 0; j < w; j++){
query[(j % num)/lst].pb(f(i, j));
}
}
vector<int> res;
for(int i = 0; i < num; i++){
if(query[i].size()){
res.pb(add_xor(query[i]));
}
}
xdigit[dig - 1] = add_or(res);
}
vector<int> ydigit(maxdigit);
for(int dig = 1; dig <= maxdigit; dig++){
int num = 1 << dig;
int lst = num / 2;
vector<vector<int>> query(num);
for(int i = 0; i < h; i++){
for(int j = 0; j < w; j++){
query[(i % num) / lst].pb(f(i, j));
}
}
vector<int> res;
for(int i = 0; i < num; i++){
if(query[i].size())
res.pb(add_xor(query[i]));
}
ydigit[dig - 1] = add_or(res);
}
vector<int> notxdigit(maxdigit);
vector<int> notydigit(maxdigit);
for(int i = 0; i < maxdigit; i++){
notxdigit[i] = add_not(xdigit[i]);
}
for(int i = 0; i < maxdigit; i++){
notydigit[i] = add_not(ydigit[i]);
}
function<int(int)> xask = [&](int a){
vector<int> query(maxdigit);
for(int dig = 0; dig < maxdigit; dig++){
if((a >> dig) & 1){
query[dig] = xdigit[dig];
}
else
query[dig] = notxdigit[dig];
}
int ret = add_and(query);
return ret;
};
function<int(int)> yask = [&](int a){
vector<int> query(maxdigit);
for(int dig = 0; dig < maxdigit; dig++){
if((a >> dig) & 1){
query[dig] = ydigit[dig];
}
else
query[dig] = notydigit[dig];
}
int ret = add_and(query);
return ret;
};
vector<int> ans;
for(int x = 0; x <= k; x++){
int y = k - x;
vector<int> cur;
cur.pb(xask(x));
cur.pb(yask(y));
ans.pb(add_and(cur));
}
int lesgoo = add_or(ans);
}
Compilation message (stderr)
# | 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... |