Submission #1223799

#TimeUsernameProblemLanguageResultExecution timeMemory
1223799trimkusPrisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms328 KiB
#pragma GCC diagnostic ignored "-Wparentheses"

#include "prison.h"

#include <bits/stdc++.h>
using namespace std;
std::vector<std::vector<int>> devise_strategy(int N) {
    vector<vector<int>> res;
    vector<int> add(N + 1);
    add[0] = 0;
    add[1] = -1;
    add[N] = -2;
    int bit = 1;
    res.push_back(add);
    while ((1 << (bit + 1)) < N) bit += 1;
    for (int i = bit; i >= 0; --i) {
      auto na = add;
      for (int j = 2; j < N; ++j) {
        if (j >> i & 1) {
          na[j] = i * 3;
        } else {
          na[j] = i * 3 - 1;
        }
      }
      res.push_back(na);
      na = add;
      na[0] = 1;
      for (int j = 2; j < N; ++j) {
        if (j >> i & 1) {
          na[j] = i * 3 + 1;
        } else {
          na[j] = -2;
        }
      }
      res.push_back(na);
      na = add;
      na[0] = 1;
      for (int j = 2; j < N; ++j) {
        if (j >> i & 1) {
          na[j] = -1;
        } else {
          na[j] = i * 3 + 1;
        }
      }
      res.push_back(na);
    }
    for (int i = 2; i < N; ++i) {
      for (int j = bit; j >= 0; --j) {
        if (i >> j & 1) {
          res[0][i] = (bit - j) * 3 + 1;
          break;
        }
      }
    }
    // for (auto& v : res) {
    //   for (auto& u : v) {
    //     cerr << u << " ";
    //   }
    //   cerr << "\n";
    // }
    // cerr << "\n";
    // cout << res.size() << "\n";
    return res;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...