제출 #478392

#제출 시각아이디문제언어결과실행 시간메모리
478392blueVision Program (IOI19_vision)C++17
73 / 100
51 ms5600 KiB
#include "vision.h" #include <vector> #include <iostream> using namespace std; int check(int H, int W, int K) //check if dist <= K { vector<int> main_list[450]; vector<int>* opp_list = (new vector<int>[500] + 225); for(int i = 0; i < H*W; i++) { main_list[i/W + int(i%W)].push_back(i); opp_list[i/W - int(i%W)].push_back(i); } int main_onecell[450]; int main_twocell[450]; int main_block[450]; vector<int> main_check; for(int d = 0; d <= H-1 + W-1; d++) { main_onecell[d] = add_or(main_list[d]); main_twocell[d] = add_and({main_onecell[d], add_not(add_xor(main_list[d]))}); } for(int d = 0; d+K <= H-1 + W-1; d++) { vector<int> lst; vector<int> twocellcheck; for(int d1 = d; d1 <= d+K; d1++) { lst.push_back(main_onecell[d1]); twocellcheck.push_back(main_twocell[d1]); } twocellcheck.push_back(add_and({add_or(lst), add_not(add_xor(lst))})); // main_block[d] = add_or(twocellcheck); // main_check.push_back(main_block[d]); for(int t: twocellcheck) main_check.push_back(t); } int* opp_onecell = new int[450] + 225; int* opp_twocell= new int[450] + 225; int* opp_block = new int[450] + 225; vector<int> opp_check; // cerr << "check\n"; for(int d = 0 - (W-1); d <= (H-1) - 0; d++) { // cerr << "d = " << d << '\n'; opp_onecell[d] = add_or(opp_list[d]); opp_twocell[d] = add_and({opp_onecell[d], add_not(add_xor(opp_list[d]))}); } for(int d = 0 - (W-1); d+K <= (H-1) - 0; d++) { vector<int> lst; vector<int> twocellcheck; for(int d1 = d; d1 <= d+K; d1++) { lst.push_back(opp_onecell[d1]); twocellcheck.push_back(opp_twocell[d1]); } twocellcheck.push_back(add_and({add_or(lst), add_not(add_xor(lst))})); for(int t: twocellcheck) opp_check.push_back(t); // opp_block[d] = add_or(twocellcheck); // opp_check.push_back(opp_block[d]); } return add_and({add_or(main_check), add_or(opp_check)}); } void construct_network(int H, int W, int K) { if(K == 1) check(H, W, K); else add_and({check(H, W, K), add_not(check(H, W, K-1))}); }

컴파일 시 표준 에러 (stderr) 메시지

vision.cpp: In function 'int check(int, int, int)':
vision.cpp:18:9: warning: unused variable 'main_block' [-Wunused-variable]
   18 |     int main_block[450];
      |         ^~~~~~~~~~
vision.cpp:46:10: warning: unused variable 'opp_block' [-Wunused-variable]
   46 |     int* opp_block = new int[450] + 225;
      |          ^~~~~~~~~
#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...