제출 #152202

#제출 시각아이디문제언어결과실행 시간메모리
152202stefdascaVision Program (IOI19_vision)C++14
컴파일 에러
0 ms0 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; vector<int>mn, sc; 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); if(i == H-1) add_xor(pz), ++query_number; else add_xor({query_number, add_xor(pz)}), query_number += 2; mn.push_back(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({query_number, add_xor(pz)}), query_number += 2; mn.push_back(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); if(i == 0) add_xor(pz), ++query_number; else add_xor({query_number, add_xor(pz)}), query_number += 2; sc.push_back(query_number); } 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({query_number, add_xor(pz)}); query_number += 2; sc.push_back(query_number); } vector<int>k1, k2; vector<int>kplus1, kplus2; for(int i = K; i < mn.size(); ++i) { if(i + 1 < mn.size()) { add_xor({add_and({mn[i-K], mn[i]}), add_and({mn[i-K], mn[i+1]})}); query_number += 3; } else { add_xor({add_and({mn[i-K], mn[i]})}); query_number += 2; } k1.push_back(query_number); } for(int i = K; i < sc.size(); ++i) { if(i + 1 < sc.size()) { add_xor({add_and({sc[i-K], sc[i]}), add_and({sc[i-K], sc[i+1]})}); query_number += 3; } else { add_xor({add_and({sc[i-K], sc[i]})}); query_number += 2; } k2.push_back(query_number); } ++K; for(int i = K; i < mn.size(); ++i) { if(i + 1 < mn.size()) { add_xor({add_and({mn[i-K], mn[i]}), add_and({mn[i-K], mn[i+1]})}); query_number += 3; } else { add_xor({add_and({mn[i-K], mn[i]})}); query_number += 2; } kplus1.push_back(query_number); } for(int i = K; i < sc.size(); ++i) { if(i + 1 < sc.size()) { add_xor({add_and({sc[i-K], sc[i]}), add_and({sc[i-K], sc[i+1]})}); query_number += 3; } else { add_xor({add_and({sc[i-K], sc[i]})}); query_number += 2; } kplus2.push_back(query_number); } add_and({{add_or(k1), add_or(k2)}, add_not(add_or(kplus1)), add_not(add_or(kplus2))}); }

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

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:51:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = K; i < mn.size(); ++i)
                    ~~^~~~~~~~~~~
vision.cpp:53:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(i + 1 < mn.size())
            ~~~~~~^~~~~~~~~~~
vision.cpp:65:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = K; i < sc.size(); ++i)
                    ~~^~~~~~~~~~~
vision.cpp:67:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(i + 1 < sc.size())
            ~~~~~~^~~~~~~~~~~
vision.cpp:80:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = K; i < mn.size(); ++i)
                    ~~^~~~~~~~~~~
vision.cpp:82:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(i + 1 < mn.size())
            ~~~~~~^~~~~~~~~~~
vision.cpp:94:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = K; i < sc.size(); ++i)
                    ~~^~~~~~~~~~~
vision.cpp:96:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(i + 1 < sc.size())
            ~~~~~~^~~~~~~~~~~
vision.cpp:108:89: error: could not convert '{{add_or(std::vector<int>(k1)), add_or(std::vector<int>(k2))}, add_not(add_or(std::vector<int>(kplus1))), add_not(add_or(std::vector<int>(kplus2)))}' from '<brace-enclosed initializer list>' to 'std::vector<int>'
     add_and({{add_or(k1), add_or(k2)}, add_not(add_or(kplus1)), add_not(add_or(kplus2))});
                                                                                         ^