Submission #599564

#TimeUsernameProblemLanguageResultExecution timeMemory
599564fvogel499Flight to the Ford (BOI22_communication)C++17
15 / 100
51 ms1744 KiB
#include <cassert> #include "communication.h" #include <vector> // // --- 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 // void encode(int N, int X) { assert(N == 3 && (X == 1 || X == 2 || X == 3)); if (X == 1) { send(0); send(0); send(0); send(0); } else if (X == 2) { send(1); send(1); send(1); send(1); } else { send(1); send(0); send(0); send(1); } } std::pair<int, int> decode(int N) { std::vector<int> over; for (int i = 0; i < (1<<4); i++) if (__builtin_popcount(i) <= 1) over.push_back(i); over.push_back(1+4); over.push_back(1+8); over.push_back(2+8); std::vector<int> who [1<<4]; for (int i : over) who[i].push_back(1); for (int i : over) who[i^(1+2+4+8)].push_back(2); for (int i : over) who[i^(1+8)].push_back(3); for (int i = 0; i < (1<<4); i++) { while ((int)(who[i].size()) < 2) { who[i].push_back(1); } // assert((int)(who[i].size()) <= 2); } int comp = 0; for (int i = 0; i < 4; i++) { int u = receive(); if (u) { comp |= (1<<i); } } return {who[comp][0], who[comp][1]}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...