Submission #1234145

#TimeUsernameProblemLanguageResultExecution timeMemory
1234145repsakPrisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms324 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; int back(int response, int bagN){ int val = response >> 3; int index = response % 8; int nInt = (bagN >> (7 - index)) % 4; if(val != nInt){ return val > nInt ? -1 : -2; //knows answer (might be opposite) } //get index + 1 bit int newIndex = index + 1; string nIndex = to_string(newIndex); while(nIndex.size() < 3){ nIndex = "0" + nIndex; } string baseThree = ""; while(bagN > 0){ baseThree = to_string(bagN % 3) + baseThree; bagN /= 3; } // convert binary string to int char base3Val = int(newIndex) >= int(baseThree.size()) ? '0' : baseThree[newIndex]; string inBinary = base3Val + nIndex; string realBinary = ""; bool hasBeenOne = false; for(int i = 0; i < inBinary.size(); i++){ if(!hasBeenOne){ if(inBinary[i] == '0'){ continue; }else{ hasBeenOne = true; } } realBinary += inBinary[i]; } if(realBinary.size() == 0) realBinary = "0"; // int toBinary = stoi(inBinary, nullptr, 2); int toBinary = 0; // int toBinary = stoi(realBinary); int bit = 1; for(int i = realBinary.size() - 1; i >= 0; i--){ int binaryDigit = realBinary[i] - '0'; toBinary += bit * binaryDigit; bit *= 2; } return toBinary; } vector<vector<int>> devise_strategy(int N) { int X = 23; vector<vector<int>> ans; for(int i = 0; i <= X; i++){ vector<int> row(N + 1); row[0] = i % 2; for(int j = 1; j <= N; j++){ row[j] = back(i, j); } ans.push_back(row); } return ans; } // #include "grader.cpp"
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...