Submission #1222650

#TimeUsernameProblemLanguageResultExecution timeMemory
1222650sleepntsheepShopping (JOI21_shopping)C++20
0 / 100
65 ms12728 KiB
#include "Anna.h" #include <vector> namespace { const int B = 20 , N = 10000; int n, l, r, bel[N], ans, count, pre[N], suf[N] , lb, rb, num, at; } void InitA(int n, int l, int r) { ::n = n; ::l = l; ::r = r; for (int i = 0; i < n; ++i) bel[i] = i / B; lb = bel[l] + 1 , rb = bel[r]; for (int i = 8; i >= 0; --i) SendA((lb >> i) & 1); for (int i = 8; i >= 0; --i) SendA((rb >> i) & 1); count = 0; ans = 0; num = 0; at = lb * B + B - 1; } void ReceiveA(bool x) { if (count < 20) { ans |= (x ? 1 : 0) << (20 - count - 1); } else { int y = (count - 20) % 20; num |= (x ? 1 : 0) << y; if (y == 19) { if (at == lb * B) { pre[at] = num; at = rb * B; if (at >= l && ans > num) ans = num; } else if (at <= lb * B + B - 1) { pre[at] = num; --at; if (at >= l && ans > num) ans = num; } else { suf[at] = num; ++at; if (at <= r && ans > num) ans = num; } pre[at] = num; num = 0; } } ++count; } int Answer() { return ans; }
#include "Bruno.h" #include <cstdio> #include <vector> namespace { const int B = 20, N = 10000; std::vector<int> P; int n, bel[N], low[N] , tot, count; } void InitB(int n, std::vector<int> P) { ::P = P; ::n = n; for (int i = 0; i < n; ++i) bel[i] = i / B, low[i / B] = P[i]; for (int i = 0; i < n; ++i) if (low[i / B] > P[i]) low[i / B] = P[i]; count = 0; } void ReceiveB(bool y) { tot |= (y? 1 : 0) << (18 - count - 1); ++count; if (count == 18) { printf(" COUNT 18 \n"); int lb = tot >> 9, rb = tot & 511; int x = (1 << 20) - 1; for (int i = lb; i < rb; ++i) if (low[i] < x) x = low[i]; for (int j = 19; j >= 0; --j) SendB((x >> j) & 1); int at; at = lb * B + B - 1; for (; at >= lb * B; --at) { for (int j = 19; j >= 0; --j) SendB((P[at] >> j) & 1); } at = rb * B; for (; at < rb * B + B; ++at) { for (int j = 19; j >= 0; --j) SendB((P[at] >> j) & 1); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...