Submission #717823

#TimeUsernameProblemLanguageResultExecution timeMemory
717823EntityPlanttParrots (IOI11_parrots)C++14
88 / 100
9 ms1368 KiB
#include "encoder.h" #include "encoderlib.h" void encode(int n, int m[]) { if (n > 32) { for (int i = 0, j; i < n; i++) { for (j = 0; j < 4; j++) { if (m[i] & (1 << j)) { send((i << 2) + j); } } for (j = 4; j < 8; j++) { if (m[i] & (1 << j)) { send((i << 2) + j - 4); send((i << 2) + j - 4); } } } } else { for (int i = 0, j; i < n; i++) { for (j = 0; j < 8; j++) { if (m[i] & (1 << j)) { send((i << 3) + j); } } } } } /** * N <= 32: * IIIIIPPP * I - index * P - position * * N > 32: * IIIIIIPP * I - index * P - position * If present once, pos = PP * If present twice, pos = PP + 4 * If present thrice, pos = {PP, PP + 4} **/
#include "decoder.h" #include "decoderlib.h" #include <vector> void decode(int n, int l, int x[]) { std::vector <int> m(n, 0); if (n > 32) { for (int i = 0; i < l; i++) { if (m[x[i] >> 2] & (1 << (x[i] & 3))) { m[x[i] >> 2] &= ~(1 << (x[i] & 3)); m[x[i] >> 2] |= 1 << ((x[i] & 3) + 4); } else { m[x[i] >> 2] |= 1 << (x[i] & 3); } } } else { for (int i = 0; i < l; i++) { m[x[i] >> 3] |= 1 << (x[i] & 7); } } for (int &i : m) { output(i); } } /** * N <= 32: * IIIIIPPP * I - index * P - position * * N > 32: * IIIIIIPP * I - index * P - position * If present once, pos = PP * If present twice, pos = PP + 4 * If present thrice, pos = {PP, PP + 4} **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...