Submission #152180

#TimeUsernameProblemLanguageResultExecution timeMemory
152180stefdascaVision Program (IOI19_vision)C++14
12 / 100
11 ms1272 KiB
#include "vision.h" #include<bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { int query_number = H * W - 1; for(int i = H - 1; i >= 0; --i) { vector<int>pz; for(int a = i, b = 0; a < H && b < W; ++a, ++b) pz.push_back(a * W + b); add_xor(pz); ++query_number; } for(int i = 1; i < W; ++i) { vector<int>pz; for(int a = 0, b = i; a < H && b < W; ++a, ++b) pz.push_back(a * W + b); add_xor(pz); ++query_number; } int q3 = query_number; for(int i = 0; i < W; ++i) { vector<int>pz; for(int a = 0, b = i; a < H && b >= 0; ++a, --b) pz.push_back(a * W + b); add_xor(pz); ++q3; } for(int i = 1; i < H; ++i) { vector<int>pz; for(int a = i, b = W - 1; a < H && b >= 0; ++a, --b) pz.push_back(a * W + b); add_xor(pz); ++q3; } int total = q3; vector<int>lst; while(q3 - K > query_number) { ++total; lst.push_back(total); add_and({q3, q3 - K}); --q3; } while(query_number - K >= H * W) { ++total; lst.push_back(total); add_and({query_number, query_number - K}); --query_number; } add_or(lst); }
#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...