제출 #345789

#제출 시각아이디문제언어결과실행 시간메모리
345789Kevin_Zhang_TW앵무새 (IOI11_parrots)C++17
81 / 100
5 ms1684 KiB
#include "encoder.h" #include "encoderlib.h" #ifndef MINC #define MINC #include <bits/stdc++.h> using namespace std; using ll = long long; #define pb emplace_back #define AI(i) begin(i), end(i) template<class T> bool chmin(T &a, T b) { return b < a ? (a = b, true) : false; } template<class T> bool chmax(T &a, T b) { return a < b ? (a = b, true) : false; } #ifdef KEV #define DE(args...) kout("[ " + string(#args) + " ] = ", args) void kout() { cerr << endl; } template<class T, class ...U> void kout(T a, U ...b) { cerr << a << ' ', kout(b...); } template<class T> void debug(T L, T R) { while (L != R) cerr << *L << " \n"[next(L) == R], ++L; } #else #define DE(...) 0 #define debug(...) 0 #endif #endif // send(int b) void encode(int N, int M[]) { static const int MAX_N = 256; static int cnt[MAX_N], sd[MAX_N]; for (int i = 0;i < N;++i) ++cnt[M[i]]; for (int i = 0;i < MAX_N;++i) if (cnt[i]) sd[i] = 2, cnt[i] = 1; for (int i = 1;i < MAX_N;++i) cnt[i] += cnt[i-1]; int b = 0; for (int i = 0;i < N;++i) { int V = cnt[ M[i] ] - 1; for (int j = 0;j < 6;++j) sd[b++] += (V >> j & 1); } for (int i = 0;i < MAX_N;++i) for (int j = 0;j < sd[i];++j) send(i); memset(cnt, 0, sizeof(cnt)); memset(sd, 0, sizeof(sd)); }
#include "decoder.h" #include "decoderlib.h" #ifndef MINC #define MINC #include <bits/stdc++.h> using namespace std; using ll = long long; #define pb emplace_back #define AI(i) begin(i), end(i) template<class T> bool chmin(T &a, T b) { return b < a ? (a = b, true) : false; } template<class T> bool chmax(T &a, T b) { return a < b ? (a = b, true) : false; } #ifdef KEV #define DE(args...) kout("[ " + string(#args) + " ] = ", args) void kout() { cerr << endl; } template<class T, class ...U> void kout(T a, U ...b) { cerr << a << ' ', kout(b...); } template<class T> void debug(T L, T R) { while (L != R) cerr << *L << " \n"[next(L) == R], ++L; } #else #define DE(...) 0 #define debug(...) 0 #endif #endif // output(int b) void decode(int N, int L, int X[]) { static const int MAX_N = 256; static int cnt[MAX_N]; vector<int> val; for (int i = 0;i < L;++i) ++cnt[X[i]]; for (int i = 0;i < MAX_N;++i) if (cnt[i] > 1) cnt[i] -= 2, val.pb(i); for (int i = 0;i < N;++i) { int res = 0; for (int j = 0;j < 6;++j) res += cnt[i * 6 + j] << j; output(val[res]); } memset(cnt, 0, sizeof(cnt)); }
#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...