Submission #960052

#TimeUsernameProblemLanguageResultExecution timeMemory
960052LucaLucaMUnscrambling a Messy Bug (IOI16_messy)C++17
49 / 100
1 ms440 KiB
#include <vector>
#include "messy.h"
#include <random>
#include <algorithm>

bool exista(std::string s) {
  return check_element(s);
}

std::mt19937 rng(12345678);

std::vector<int> restore_permutation(int n, int w, int r) {
  std::vector<int> order(n);
  for (int i = 0; i < n; i++) {
    order[i] = i;
  }
  std::shuffle(order.begin(), order.end(), rng);
  std::string s(n, '0');
  for (const auto &i : order) {
    s[i] = '1';
    add_element(s);
  }
  compile_set();
  bool ocupat[n] = {};
  std::vector<int> p(n);

  s = std::string(n, '0');

  for (const auto &i : order) {
    for (int j = 0; j < n; j++) {
      if (!ocupat[j]) {
        s[j] = '1';
        if (exista(s)) {
          p[j] = i;
          ocupat[j] = true;
          break;
        }
        s[j] = '0';
      }
    }
  }

  return p;
}

/**

4 16 16
2 1 3 0

**/
#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...