Submission #1140308

#TimeUsernameProblemLanguageResultExecution timeMemory
1140308MaaxlePrisoner Challenge (IOI22_prison)C++20
30 / 100
16 ms2120 KiB
#include <bits/stdc++.h>
#include "prison.h"

#define range(it, a, b) for (ll it = a; it < b; it++)
#define invr(it, a, b) for (ll it = a; it >= b; it--)
#define all(x) begin(x), end(x)
#define ll long long
#define ull unsigned long long
#define ld long double
#define INF64 ((ll) 1 << 62)
#define INF32 (1 << 30)
#define mset multiset
#define uset unordered_set
#define umap unordered_map 
#define pqueue priority_queue 
#define ptr(A) shared_ptr<A>
#define v(x) vector<x>

using namespace std;

v(v(int)) devise_strategy(int N) {
  v(v(int)) ans (60, v(int)(N+1));

  range(b, 0, 13) {
    range(s, 0, 3) {
      range(j, 1, N+1) {
        int i = (s << 4) + b;
        int rb = 12 - b;
        ans[i][0] = (s > 0);

        // A IS ALREADY CHECKED
        if (s > 0) {
          bool bb = ((j & (1 << rb)) > 0);
          bool ab = (s == 2);

          if (ab != bb) 
            ans[i][j] = (bb ? -1 : -2);
          else ans[i][j] = b+1;
          continue;
        }
        
        // CHECK A
        bool ab = ((j & (1 << rb)) > 0);
        int ns = (ab ? 2 : 1);
        ans[i][j] = (ns << 4) + b;
      }
    }
  }

  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...