Submission #578184

#TimeUsernameProblemLanguageResultExecution timeMemory
5781848e7Flight to the Ford (BOI22_communication)C++17
0 / 100
3 ms200 KiB
#include"communication.h" // // --- Sample implementation for the task communication --- // // To compile this program with the sample grader, place: // communication.h communication_sample.cpp sample_grader.cpp // in a single folder, then open the terminal in this directory (right-click onto an empty spot in the directory, // left click on "Open in terminal") and enter e.g.: // g++ -std=c++17 communication_sample.cpp sample_grader.cpp // in this folder. This will create a file a.out in the current directory which you can execute from the terminal // as ./a.out // See task statement or sample_grader.cpp for the input specification // unsigned nxt(int p) { return (p + 7) % 16; } void encode(int N, int X) { unsigned mask = 0; int low = 0, up = N + 1; while (up - low > 1) { int m = (low + up) / 2; if (X >= m) { //negative num bool ok = 0; do { int sum = 0, p; for (int i = 0;i < 4;i++) { if (mask & (1<<i)) { p = send(0); sum += (p ? 1 : -1); }else { p = send(1); sum += (p ? -1 : 1); } } mask = nxt(mask); if (sum < 0) { ok = 1; } } while (ok); low = m; } else { bool ok = 0; do { int sum = 0, p; for (int i = 0;i < 4;i++) { if (mask & (1<<i)) { p = send(1); sum += (p ? 1 : -1); }else { p = send(0); sum += (p ? -1 : 1); } } mask = nxt(mask); if (sum > 0) { ok = 1; } } while (ok); up = m; } } } std::pair<int, int> decode(int N) { unsigned mask = 0; int low = 0, up = N + 1; while (up - low > 1) { int m = (low + up) / 2; bool ok = 1; do { int sum = 0, p; for (int i = 0;i < 4;i++) { if (mask & (1<<i)) { p = send(0); sum += (p ? 1 : -1); }else { p = send(1); sum += (p ? -1 : 1); } } mask = nxt(mask); if (sum != 0) { if (sum < 0) low = m; else up = m; ok = 1; } } while (ok); } return {N, low}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...