Submission #283120

#TimeUsernameProblemLanguageResultExecution timeMemory
283120aymanrsVision Program (IOI19_vision)C++14
33 / 100
75 ms10232 KiB
#include <iostream> #include <set> #include <vector> #include "vision.h" std::set<std::pair<std::pair<int,int>, std::pair<int, int>>> alreadyTried; bool valid(int H, int W, int i, int j, int oI, int oJ){ if(oI < i || (oI == i && oJ < j)){ if(alreadyTried.find({{oI, oJ}, {i, j}}) != alreadyTried.end()){ return false; } else { alreadyTried.insert({{oI, oJ}, {i, j}}); } } else { if(alreadyTried.find({{i, j}, {oI, oJ}}) != alreadyTried.end()){ return false; } else { alreadyTried.insert({{i, j}, {oI, oJ}}); } } return i >= 0 && i < H && j >= 0 && j < W; } void construct_network(int H, int W, int K){ int ind = H*W; for(int i = 0;i < H;i++){ for(int j = 0;j < W;j++){ for(int x = -K + 1; x < K;x++){ int y = K - abs(x); if(valid(H, W, i+y, j+x, i, j)){ add_and({i*W+j, (i+y)*W + j+x}); ind++; } y=-y; if(valid(H, W, i+y, j+x, i, j)){ add_and({i*W+j, (i+y)*W + j+x}); ind++; } } if(valid(H, W, i, j+K, i, j)){ add_and({i*W+j, i*W + j+K}); ind++; } if(valid(H, W, i, j-K, i, j)){ add_and({i*W+j, i*W + j-K}); ind++; } } } std::vector<int> vec; for(int i = H*W;i < ind;i++){ vec.push_back(i); } add_or(vec); }
#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...