Submission #318945

#TimeUsernameProblemLanguageResultExecution timeMemory
318945lohachoVision Program (IOI19_vision)C++14
100 / 100
51 ms4708 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; using LL = long long; const int MOD = (int)1e9 + 7; const int NS = (int)204; vector<int> line, pre, suf, resk, resK; int kex, Kex; void construct_network(int H, int W, int K) { for(int i = 0; i <= H + W - 2; ++i){ vector<int> inp; for(int x = 0; x <= i; ++x){ int y = i - x; if(x >= 0 && x < H && y >= 0 && y < W){ inp.push_back(x * W + y); } } line.push_back(add_or(inp)); } vector<int> inp; for(int i = 0; i < (int)line.size(); ++i){ inp.push_back(line[i]); pre.push_back(add_or(inp)); } inp.clear(); for(int i = (int)line.size() - 1; i >= 0; --i){ inp.push_back(line[i]); suf.push_back(add_or(inp)); } reverse(suf.begin(), suf.end()); for(int i = 0; i + K < (int)pre.size(); ++i){ resk.push_back(add_and({pre[i], suf[i + K]})); if(i + K + 1 < (int)pre.size()){ resK.push_back(add_and({pre[i], suf[i + K + 1]})); } } line.clear(), pre.clear(), suf.clear(); for(int i = 0; i <= H + W - 2; ++i){ vector<int> inp; for(int x = 0; x <= i; ++x){ int y = i - x; if(x >= 0 && x < H && y >= 0 && y < W){ y = W - y - 1; inp.push_back(x * W + y); } } line.push_back(add_or(inp)); } inp.clear(); for(int i = 0; i < (int)line.size(); ++i){ inp.push_back(line[i]); pre.push_back(add_or(inp)); } inp.clear(); for(int i = (int)line.size() - 1; i >= 0; --i){ inp.push_back(line[i]); suf.push_back(add_or(inp)); } reverse(suf.begin(), suf.end()); for(int i = 0; i + K < (int)pre.size(); ++i){ resk.push_back(add_and({pre[i], suf[i + K]})); if(i + K + 1 < (int)pre.size()){ resK.push_back(add_and({pre[i], suf[i + K + 1]})); } } inp.clear(); for(auto&i:resk){ inp.push_back(i); } kex = add_or(inp); inp.clear(); for(auto&i:resK){ inp.push_back(i); } if((int)inp.size()){ Kex = add_or(inp); add_xor({kex, Kex}); } }
#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...