제출 #1226211

#제출 시각아이디문제언어결과실행 시간메모리
1226211VMaksimoski008죄수들의 도전 (IOI22_prison)C++17
30 / 100
26 ms2116 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(53, vector<int>(n+1)); //ako vide 0 na table e base case //vidi 12 bit 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] = i + 26; } } } //strategija za A for(int i=27; i<=52; i++) { ans[i][0] = 0; if(i == 27 || i == 40) { for(int j=1; j<=n; j++) ans[i][j] = -1; continue; } int val; if(i < 40) val = i - 27; else val = i - 40; val--; // if(i == 52) cout << "nxt " << val << endl; 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; } } } // for(int j=0; j<=n; j++) cout << ans[52][j] << " "; // cout << endl; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...