Submission #869455

#TimeUsernameProblemLanguageResultExecution timeMemory
869455n1kVision Program (IOI19_vision)C++17
100 / 100
27 ms3520 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; void construct_network(int H, int W, int K) { map<int, vector<int>> mpx, mpy; for(int r = 0; r < H; r++){ for(int c = 0; c < W; c++){ mpx[r + c].push_back(r * W + c); mpy[c - r].push_back(r * W + c); } } vector<int> vx, vy, any1, any2, any1smaller, any2smaller; for(auto [k, v] : mpx){ vx.push_back(add_or(v)); } for(auto [k, v] : mpy){ vy.push_back(add_or(v)); } // determin if we have dist K in one of both // (any(dist1 == K) or any(dist2 == K) and dist1 <= K and dist2 <= K) // case where two fall on the same diagonal !!!!!!!!!! for(int i = 0; i < vx.size(); i++){ if(i < vx.size() - K) any1.push_back(add_and({vx[i], vx[i + K]})); //any1smaller.push_back(add_and({vx[i], add_not(add_xor(vector<int>(vx.begin() + i, vx.begin() + min(vx.size(), (size_t) i + K + 1))))})); if(i + 1< vx.size()) any1smaller.push_back(add_and({vx[i], add_or(vector<int>(vx.begin() + i + 1, vx.begin() + min(vx.size(), (size_t) i + K + 1)))})); } any1smaller.push_back(add_xor(vx)); for(int i = 0; i < vy.size(); i++){ if(i < vy.size() - K) any2.push_back(add_and({vy[i], vy[i + K]})); //any2smaller.push_back(add_and({vy[i], add_not(add_xor(vector<int>(vy.begin() + i, vy.begin() + min(vy.size(), (size_t) i + K + 1))))})); if(i + 1 < vy.size()) any2smaller.push_back(add_and({vy[i], add_or(vector<int>(vy.begin() + i + 1, vy.begin() + min(vy.size(), (size_t) i + K + 1)))})); } any2smaller.push_back(add_xor(vy)); // and(x, y) add_and({add_or({add_or(any1), add_or(any2)}), add_or(any1smaller), add_or(any2smaller)}); }

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:24:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |  for(int i = 0; i < vx.size(); i++){
      |                 ~~^~~~~~~~~~~
vision.cpp:25:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |   if(i < vx.size() - K)
      |      ~~^~~~~~~~~~~~~~~
vision.cpp:28:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   if(i + 1< vx.size())
      |      ~~~~~^~~~~~~~~~~
vision.cpp:32:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |  for(int i = 0; i < vy.size(); i++){
      |                 ~~^~~~~~~~~~~
vision.cpp:33:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |   if(i < vy.size() - K)
      |      ~~^~~~~~~~~~~~~~~
vision.cpp:36:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |   if(i + 1 < vy.size())
      |      ~~~~~~^~~~~~~~~~~
#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...