제출 #65903

#제출 시각아이디문제언어결과실행 시간메모리
65903lipschitz앵무새 (IOI11_parrots)C++14
81 / 100
17 ms2528 KiB
#include "encoder.h" #include "encoderlib.h" void encode(int N, int M[]) { int i; if (N > 32) { int mask = 0x000f; for (i = 0; i < N; i++) { int seq = i << 2; int temp = M[i]&mask; for (int j = 0; j < 4; j++) { if (temp & 1) { send(seq + j); } temp >>= 1; } temp = (M[i] >> 4)&mask; for (int j = 0; j < 4; j++) { if (temp & 1) { send(seq + j); send(seq + j); } temp >>= 1; } } return; } for (i = 0; i < N; i++) { int seq = i << 3; int temp = M[i]; for (int j = 0; j < 8; j++) { if (temp & 1) { send(seq + j); } temp >>= 1; } } }
#include "decoder.h" #include "decoderlib.h" #include<algorithm> #include<vector> using namespace std; void decode(int N, int L, int X[]) { int i, mask = 0x0007, mask2 = 0x0003; int b[64]; for (int i = 0; i < 64; i++) b[i] = 0; sort(X, X + L); int seq = 0, ans = 0; if (N > 32) { vector<int> Y; int temp = ((X[0] >> 2) << 3) + (X[0] & mask2); Y.push_back(temp); for (i = 1; i < L; i++) { temp = ((X[i] >> 2) << 3) + (X[i] & mask2); if (temp^Y.back()) { Y.push_back(temp); continue; } Y.pop_back(); Y.push_back(temp + 4); } i = 0; while (!Y.empty()) { X[i++] = Y.back(); Y.pop_back(); } L = i; sort(X, X + L); } for(i=0; i<L; i++) { if ((X[i] >> 3)^seq) { b[seq] = ans; ans = 0; seq = X[i] >> 3; } ans += (1 << (X[i] & mask)); } b[seq] = ans; for (int i = 0; i < N; i++) output(b[i]); }
#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...