제출 #717822

#제출 시각아이디문제언어결과실행 시간메모리
717822EntityPlantt앵무새 (IOI11_parrots)C++14
52 / 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; i < n; i++) { send((i << 4) | 0 | ((m[i] >> 0) & 3)); send((i << 4) | 4 | ((m[i] >> 2) & 3)); send((i << 4) | 8 | ((m[i] >> 4) & 3)); send((i << 4) | 12 | ((m[i] >> 6) & 3)); } } } /** * 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++) { switch (x[i] & 12) { case 0: m[x[i] >> 4] |= (x[i] & 3) << 0; break; case 4: m[x[i] >> 4] |= (x[i] & 3) << 2; break; case 8: m[x[i] >> 4] |= (x[i] & 3) << 4; break; case 12: m[x[i] >> 4] |= (x[i] & 3) << 6; break; } } } 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...