제출 #727621

#제출 시각아이디문제언어결과실행 시간메모리
727621PixelCatVision Program (IOI19_vision)C++14
58 / 100
85 ms8240 KiB
#include "vision.h" #ifdef NYAOWO #include "grader.cpp" #endif #include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i,a, b) for(int i = a; i >= b; i--) #define F first #define S second #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define eb emplace_back // #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; vector<vector<int>> dia1; // x + y, [0, H + W - 2] vector<vector<int>> dia2; // x - y + W - 1, [0, H + W - 2] int check(int k) { int n = sz(dia1); vector<int> v; For(i, 0, n - k - 1) { vector<int> q; For(j, 0, k) q.insert(q.end(), all(dia1[i + j])); // or = 1, xor = 0 => 2 black cells v.eb(add_xor({add_or(q), add_xor(q)})); } int a = add_or(v); v.clear(); For(i, 0, n - k - 1) { vector<int> q; For(j, 0, k) q.insert(q.end(), all(dia2[i + j])); // or = 1, xor = 0 => 2 black cells v.eb(add_xor({add_or(q), add_xor(q)})); } int b = add_or(v); return add_and({a, b}); } void construct_network(int H, int W, int K) { // std::vector<int> Ns; // Ns = {0, 1}; // int a = add_and(Ns); // Ns = {0, a}; // int b = add_or(Ns); // Ns = {0, 1, b}; // int c = add_xor(Ns); // add_not(c); dia1.resize(H + W - 1); dia2.resize(H + W - 1); For(i, 0, H - 1) For(j, 0, W - 1) { int id = i * W + j; dia1[i + j].eb(id); dia2[i - j + W - 1].eb(id); } int a = check(K); int b = check(K - 1); b = add_not(b); add_and({a, b}); }
#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...