Submission #1226231

#TimeUsernameProblemLanguageResultExecution timeMemory
1226231VMaksimoski008Prisoner Challenge (IOI22_prison)C++17
36.50 / 100
11 ms1608 KiB
#include "prison.h"
#include <bits/stdc++.h>
using namespace std;

//bit po bit
//1-13 ima vo A
//14-26 nema vo A
//27-39 ima vo B
//40-52 nema vo B
vector<vector<int>> devise_strategy(int n) {
    vector<vector<int> > ans(40, vector<int>(n+1));

    ans[0][0] = 0;
    for(int i=1; i<=n; i++) {
      if(i & (1 << 12)) ans[0][i] = 13;
      else ans[0][i] = 26;
    }

    //strategija za B
    for(int i=1; i<=26; i++) {
      ans[i][0] = 1;
      int on, val;
      on = (i <= 13);
      if(i <= 13) val = i - 1;
      else val = i - 14;

      for(int j=1; j<=n; j++) {
        bool b = j & (1 << val);
        if(on && !b) {
          ans[i][j] = -2;
        } else if(!on && b) {
          ans[i][j] = -1;
        } else {
          ans[i][j] = val + 27;
        }
      }
    }

    //strategija za A
    //glup sum, nema sto
    for(int i=27; i<=39; i++) {
      ans[i][0] = 0;
      if(i == 27) {
        for(int j=1; j<=n; j++) ans[i][j] = -1;
        continue;
      }

      int val = i - 28;

      for(int j=1; j<=n; j++) {
        bool b = j & (1 << val);
        if(b) {
          ans[i][j] = val + 1;
        } else {
          ans[i][j] = val + 14;
        }
      }
    }

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