Submission #1056421

#TimeUsernameProblemLanguageResultExecution timeMemory
1056421TobVision Program (IOI19_vision)C++14
0 / 100
7 ms1748 KiB
#include <bits/stdc++.h> #include "vision.h" #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) using namespace std; typedef long long ll; typedef pair <ll, ll> pii; const int lg = 8; vector <int> f(vector <int> v) { vector <int> v2; for (auto x : v) if (x != -1) v2.pb(x); return v2; } void add1(vector <int>& a, int ca) { for (int i = 0; i < lg; i++) { int y = add_and(f({a[i], ca})); a[i] = add_xor(f({a[i], ca})); ca = y; } } void add2(vector <int>& a, vector <int> b) { for (int i = 0, ca = -1; i < lg+1; i++) { vector <int> v1, v2; v1 = {a[i], b[i], ca}; int x = add_xor(f(v1)); if (ca == -1 && a[i] != -1 && b[i] != -1) ca = add_and({a[i], b[i]}); v2 = f(v1); if (v2.size() < 2) ca = -1; else if (v2.size() == 2) ca = add_and(v2); else ca = add_or({add_and({v2[0],v2[1]}), add_and({v2[0],v2[2]}), add_and({v2[1],v2[2]})}); a[i] = x; } } void construct_network(int h, int w, int k) { vector <int> pxh(h), pxw(w); vector <int> v, a, b, tmp; for (int i = 0; i < w; i++) v.pb(i); pxh[0] = add_or(v); for (int i = 0; i < lg; i++) a.pb(-1); a[0] = pxh[0]; tmp = {pxh[0]}; for (int i = 1; i < h; i++) { v.clear(); for (int j = 0; j < w; j++) v.pb(i*w+j); pxh[i] = add_xor({pxh[i-1], add_or(v)}); add1(a, {pxh[i]}); tmp.pb(pxh[i]); } int p[2]; p[1] = add_or(tmp); p[0] = add_not(p[1]); v.clear(); for (int i = 0; i < h; i++) v.pb(i*w); pxw[0] = add_or(v); for (int i = 0; i < lg; i++) b.pb(-1); b[0] = pxw[0]; for (int i = 1; i < w; i++) { v.clear(); for (int j = 0; j < h; j++) v.pb(j*w+i); pxw[i] = add_xor({pxw[i-1], add_or(v)}); add1(b, {pxw[i]}); } a.pb(-1); b.pb(-1); add2(a, b); v.clear(); for (int i = 0; i < lg+1; i++) { int B = ((k >> i) & 1); v.pb(add_xor(f({p[B], a[i]}))); } add_not(add_or(v)); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...