Submission #1044028

#TimeUsernameProblemLanguageResultExecution timeMemory
1044028yanbVision Program (IOI19_vision)C++14
0 / 100
4 ms1240 KiB
#include <bits/stdc++.h> #include "vision.h" using namespace std; void def(int Y, int X, int K) { vector<int> ox(X); for (int i = 0; i < X; i++) { vector<int> Ns(Y); for (int j = 0; j < Y; j++) { Ns[j] = j * X + i; } ox[i] = add_or(Ns); } vector<int> oy(Y); for (int i = 0; i < Y; i++) { vector<int> Ns(X); for (int j = 0; j < X; j++) { Ns[j] = j + i * X; } oy[i] = add_or(Ns); } vector<int> dx(X); vector<int> Ns; for (int i = 0; i < X; i++) Ns.push_back(ox[i]); dx[0] = add_xor(Ns); for (int d = 1; d < X; d++) { vector<int> Ns; for (int i = 0; i + d < X; i++) { Ns.push_back(add_and({ox[i], ox[i + d]})); } dx[d] = add_or(Ns); } vector<int> dy(Y); Ns.clear(); for (int i = 0; i < Y; i++) Ns.push_back(oy[i]); dy[0] = add_xor(Ns); for (int d = 1; d < Y; d++) { vector<int> Ns; for (int i = 0; i + d < Y; i++) { Ns.push_back(add_and({oy[i], oy[i + d]})); } dy[d] = add_or(Ns); } Ns.clear(); for (int x = 0; x < X; x++) { for (int y = 0; y < Y; y++) { if (x + y == K) { Ns.push_back(add_and({dx[x], dy[y]})); } } } add_or(Ns); } void k1(int Y, int X, int K) { vector<int> ox(X); for (int i = 0; i < X; i++) { vector<int> Ns(Y); for (int j = 0; j < Y; j++) { Ns[j] = j * X + i; } ox[i] = add_or(Ns); } vector<int> oy(Y); for (int i = 0; i < Y; i++) { vector<int> Ns(X); for (int j = 0; j < X; j++) { Ns[j] = j + i * X; } oy[i] = add_or(Ns); } vector<int> dx(X); vector<int> Ns; for (int i = 0; i < X; i++) Ns.push_back(ox[i]); dx[0] = add_xor(Ns); for (int d = 1; d < 2; d++) { vector<int> Ns; for (int i = 0; i + d < X; i++) { Ns.push_back(add_and({ox[i], ox[i + d]})); } dx[d] = add_or(Ns); } vector<int> dy(Y); Ns.clear(); for (int i = 0; i < Y; i++) Ns.push_back(oy[i]); dy[0] = add_xor(Ns); for (int d = 1; d < 2; d++) { vector<int> Ns; for (int i = 0; i + d < Y; i++) { Ns.push_back(add_and({oy[i], oy[i + d]})); } dy[d] = add_or(Ns); } Ns.clear(); for (int x = 0; x < X; x++) { for (int y = 0; y < Y; y++) { if (x + y == K) { Ns.push_back(add_and({dx[x], dy[y]})); } } } add_or(Ns); } void construct_network(int Y, int X, int K) { if (K == 1) k1(Y, X, K); else def(Y, X, K); }
#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...