Submission #1212785

#TimeUsernameProblemLanguageResultExecution timeMemory
1212785nerrrminPrisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms328 KiB
#include "prison.h" #include<bits/stdc++.h> #include <vector> using namespace std; int n; /// 0 a 1 b /// 1 2 - A bit 0 /// 3 4 - B bit 1 /// 5 6 - A bit 2 /// 7 8 - B bit 3 /// 9 10 - A bit 4 struct node { int bit, on, was; node() {}; node(int _bit, int _on, int _was) { bit = _bit; on = _on; was = _was; } }; node decode(int val) { // assert() // cout << "decodingg " << val << endl; node ans; // assert(val < 27); int bucket = (val - 1) / 2; ans.bit = bucket; if(val & 1)ans.was = 0; else ans.was = 1; /// ako bita e cheten -> a if(ans.bit % 2 == 0)ans.on = 1; else ans.on = 0; // cout << ans.bit << " " <<ans.on << " " << ans.was << endl; return ans; } int encode(int bit, int on, int was) { assert(bit < 14); // if(was)cout << " !! " << endl; //cout << "encode" << endl; //cout << bit << " " << on << " " << was << endl; int base = (bit * 2) + 1; if(was == 1)base ++; //cout << base << endl; ///assert(base < 27); /// if(base > 30)cout << "wtf no" << endl; return base; } int get_real_bit(int bit, int value) { int realbit = 13-bit; if(value & (1 << realbit))return 1; else return 0; } std::vector<std::vector<int>> devise_strategy(int N) { // cout << "here "<< endl; n = N; vector < vector < int > > ans; ans.resize(27); for (int i = 0; i <= 26; ++ i) ans[i].resize(n+1); // ako sme na 0 ans[0][0] = 0; for(int val = 1; val <= n; ++ val) { int nxt = encode(0, 0, get_real_bit(0, val)); ans[0][val] = nxt; } for (int i = 1; i <= 26; ++ i) { node status = decode(i); ans[i][0] = 1 - status.on; for (int val = 1; val <= n; ++ val) { int has = get_real_bit(status.bit, val); if(has != status.was) { if((has == 0 && ans[i][0] == 0) || (has == 1 && ans[i][0] == 1))ans[i][val] = -1; else ans[i][val] = -2; } else if(status.bit < 12) { node nxt = node(status.bit+1, ans[i][0], get_real_bit(status.bit+1, val)); int code_nxt = encode(nxt.bit, nxt.on, nxt.was); ans[i][val] = code_nxt; } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...