# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
696467 | pls33 | 앵무새 (IOI11_parrots) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "encoder.h"
#include "encoderlib.h"
// miau
const _bit noise("0010110000110010111110010001001011111110010001111110000001100101000100000010010001010110101100011000001101110110001000000001011101101111000111010000100100000000111101110111010100011011010101011011111011000111111000000101000011011011100011010001000101000010");
void encode(int N, int M[])
{
_bit a, b;
int set_count = 0;
_bit *c = &a;
for (int i = 0; i < N; i++)
{
if (set_count == 256)
{
c = &b;
set_count = 0;
}
*c |= M[i];
set_count += 8;
if (set_count < min(256, 8 * N))
{
*c <<= 8;
}
}
for (int i = 0; i < min(256, 8 * N); i++)
{
a[i] = a[i] ^ noise[i];
}
for (int i = 0; i < 8 * N - 256; i++)
{
b[i] = b[i] ^ noise[i];
}
for (int i = 0; i < 256; i++)
{
int count = a[i] | (b[i] << 1);
for (int j = 0; j < count; j++)
{
send(i);
}
}
}
#include "decoder.h"
#include "decoderlib.h"
// uaim
const _bit noise("0010110000110010111110010001001011111110010001111110000001100101000100000010010001010110101100011000001101110110001000000001011101101111000111010000100100000000111101110111010100011011010101011011111011000111111000000101000011011011100011010001000101000010");
void decode(int N, int L, int X[])
{
bitset<512> a;
vi16 count(256);
for (int i = 0; i < L; i++)
{
count[X[i]]++;
}
for (int i = 0; i < 256; i++)
{
a[i] = bool(count[i] & 1) ^ noise[i];
a[i + 256] = bool(count[i] & 2) ^ noise[i];
}
vi32 things_a;
for (int i = 0; i < N; i++)
{
int val = 0;
for (int j = 0; j < 8; j++)
{
val |= a[j] << j;
}
things_a.push_back(val);
a >>= 8;
}
for (int i = (int)things_a.size() - 1; i >= 0; i--)
{
output(things_a[i]);
}
}