Submission #431437

#TimeUsernameProblemLanguageResultExecution timeMemory
431437pure_memVision Program (IOI19_vision)C++14
32 / 100
9 ms1480 KiB
#include "vision.h" #include <bits/stdc++.h> #define X first #define Y second #define MP make_pair #define ll long long using namespace std; void construct_network(int H, int W, int K) { int ptr = H * W; vector< int > rowIs(H), colIs(W), rowDist(H), colDist(W); vector< vector<int> > rowInfo(H), colInfo(W); for(int i = 0;i < H;i++){ vector< int > tmp; for(int j = 0;j < W;j++){ tmp.push_back(W * i + j); } add_or(tmp), rowIs[i] = ptr++; } for(int j = 0;j < W;j++){ vector< int > tmp; for(int i = 0;i < H;i++){ tmp.push_back(W * i + j); } add_or(tmp), colIs[j] = ptr++; } for(int i1 = 0;i1 < H;i1++){ for(int i2 = i1;i2 < H;i2++){ if(i1 == i2){ vector< int > tmp; for(int i = 0;i < H;i++){ tmp.push_back(rowIs[i]); } add_xor(tmp); } else{ add_and({rowIs[i1], rowIs[i2]}); } rowInfo[i2 - i1].push_back(ptr++); } } for(int i1 = 0;i1 < W;i1++){ for(int i2 = i1;i2 < W;i2++){ if(i1 == i2){ vector< int > tmp; for(int i = 0;i < W;i++){ tmp.push_back(colIs[i]); } add_xor(tmp); } else{ add_and({colIs[i1], colIs[i2]}); } colInfo[i2 - i1].push_back(ptr++); } } for(int i = 0;i < H;i++){ add_or(rowInfo[i]); rowDist[i] = ptr++; } for(int i = 0;i < W;i++){ add_or(colInfo[i]); colDist[i] = ptr++; } vector< int > fin; for(int i = 0;i < H;i++){ for(int j = 0;j < W;j++){ if(i + j == K){ add_and({rowDist[i], colDist[j]}); fin.push_back(ptr++); } } } add_or(fin); }
#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...