Submission #1066353

#TimeUsernameProblemLanguageResultExecution timeMemory
1066353j_vdd16Prisoner Challenge (IOI22_prison)C++17
0 / 100
0 ms348 KiB
#include "prison.h" #include <algorithm> #include <bitset> #include <cstdint> #include <cstring> #include <iostream> #include <limits.h> #include <math.h> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <vector> //#define int long long #define loop(X, N) for(int X = 0; X < (N); X++) #define all(V) V.begin(), V.end() #define rall(V) V.rbegin(), V.rend() using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vector<ii>> vvii; typedef vector<bool> vb; typedef vector<vector<bool>> vvb; vvi devise_strategy(int N) { //13 + 4 + 4 //13: //4: index of next bit to search in A //4: highest set bit in first bag //5000 * 13 * 13 // int pow3[8] = { 1, 3, 9, 27, 81, 243, 729, 2187}; vvi out(22, vi(N + 1)); loop(num, 22) { if (num == 0) { out[num][0] = 1; for (int value = 1; value <= N; value++) { if (value < pow3[7]) { out[num][value] = 6 + 1; } else if (value < 2 * pow3[7]) { out[num][value] = 6 + 7 + 1; } else { out[num][value] = 6 + 2 * 7 + 1; } } continue; } int exp = (num - 1) % 7; int player = exp % 2; if (exp % 2) { out[num][0] = 1; } else { out[num][0] = 0; } int bit3 = (num - 1) / 7; for (int value = 1; value <= N; value++) { if (value < pow3[exp + 1]) { if (bit3 > 0) { out[num][value] = -1 - player; continue; } } else if (value < 2 * pow3[exp + 1]) { if (bit3 > 1) { out[num][value] = -1 - player; continue; } if (bit3 < 1) { out[num][value] = -1 - (1 - player); continue; } } else { if (bit3 > 2) { out[num][value] = -1 - player; continue; } if (bit3 < 2) { out[num][value] = -1 - (1 - player); continue; } } if (value < pow3[exp]) { out[num][value] = exp - 1 + 0 * 7 + 1; } else if (value < 2 * pow3[exp]) { out[num][value] = exp - 1 + 1 * 7 + 1; } else { out[num][value] = exp - 1 + 2 * 7 + 1; } } } return out; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...