제출 #1051142

#제출 시각아이디문제언어결과실행 시간메모리
1051142HalitVision Program (IOI19_vision)C++17
0 / 100
21 ms5336 KiB
#include "vision.h"
#include <bits/stdc++.h>

void construct_network(int H, int W, int K) { 
  std::vector<std::vector<int>> a(H+W-1), b(H+W-1);
  for (int i = 0;i < H; ++i) {
    for (int j = 0;j < W; ++j) {
      a[i +  j].push_back(i * W + j);
      b[W - j - 1 + i].push_back(i * W + j);
    }     
  }
  std::vector<std::vector<int>> diagonal(2);
  for (int i = 0;i < H+W-1; ++i) {
    diagonal[0].push_back(add_or(a[i]));
    diagonal[1].push_back(add_or(b[i]));
  }
  std::vector<std::vector<int>> ends(2);
  for (int d = 0;d < 2; ++d) {
    for (int i = 0;i+K < H+W-1; ++i) {
      std::vector<int> test = {diagonal[d][i], diagonal[d][i+K]};
      ends[d].push_back(add_and(test));
    }
  }
  std::vector<int> results;
  ++K;
  for (int d = 0;d < 2; ++d) {
    for (int i = 0;i+K <= H+W-1; ++i) {
      std::cout << d << ' ' << i << std::endl;
      std::vector<int> area_or, area_xor;
      for (int j = i;j < i+K; ++j) {
        std::cout << j << ' ';
        area_or.push_back(diagonal[d^1][j]);
        area_xor.push_back(diagonal[d^1][j]);
      }
      std::cout << std::endl;
      int aor = add_or(area_or);
      int axor = add_xor(area_xor);
      int notxor = add_not(axor);
      results.push_back(add_and({add_or(ends[d]), add_and({aor, notxor})}));
    }
  }
  add_or(results);
  return;
}
#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...