Submission #1246916

#TimeUsernameProblemLanguageResultExecution timeMemory
1246916rtriVision Program (IOI19_vision)C++20
44 / 100
44 ms1988 KiB
#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

int H, W, K;
int dist(int a, int b) {
  return abs((a % W) - (b % W)) + abs((a / W) - (b / W));
}

void construct_network(int _H, int _W, int _K) {
  H = _H, W = _W, K = _K;

  vector<int> squares(W * H);
  for (int i = 0; i < W * H; i++)
    squares[i] = i;

  std::random_device rd;
  std::mt19937 g(rd());
  shuffle(squares.begin(), squares.end(), g);

  vector<int> checks;
  int instr = H * W;
  for (int i : squares) {
    if (instr + 2 > 10000)
      break;
    vector<int> nodes;
    for (int j = 0; j < W * H; j++)
      if (dist(i, j) == K)
        nodes.push_back(j);
    if (!nodes.size())
      continue;

    add_or(nodes);
    add_and({instr, i});
    checks.push_back(instr + 1);
    instr += 2;
  }

  add_or(checks);
}
#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...