# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
105374 | eriksuenderhauf | 앵무새 (IOI11_parrots) | C++11 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "encoder.h"
#include "encoderlib.h"
int a[800];
void encode(int n, int M[]) {
int cnt = 0, x = 0, y = 0;
for (int i = 0; i < n; i++) {
for (int j = 7; j > -1; j--) {
if ((M[i] >> j) & 1)
a[cnt++] = 1;
else
a[cnt++] = 0;
if (cnt % 2 == 0) {
x += a[cnt-1] * 2 + a[cnt-2];
y += 3 - (a[cnt-1] * 2 + a[cnt-2]);
}
}
}
if (x > y)
send(0); send(0); send(0); send(0);
for (int i = 0; i < cnt; i += 2)
if (x > y)
for (int j = 0; j < 3 - (a[i+1] * 2 + a[i]); j++)
send(i / 2);
else
for (int j = 0; j < a[i+1] * 2 + a[i]; j++)
send(i / 2);
}
#include <bits/stdc++.h>
#include "decoder.h"
#include "decoderlib.h"
int a[800], b[800];
int val[16] = {0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0};
void decode(int n, int L, int X[]) {
std::sort(X, X + L);
int fl = 0;
if (L > 3 && X[0] == X[1] && X[2] == X[3] && X[0] == X[2] && X[0] == 0)
fl = 4;
int cur = fl;
for (int i = 0; i < 4 * n; i++) {
int j = cur;
while (cur < L && X[cur] == i) cur++;
j = cur - j;
a2[2 * i] = val[2 * j + 2 * fl];
a2[2 * i + 1] = val[2 * j + 1 + 2 * fl];
}
for (int i = 0; i < n; i++) {
for (int j = 7; j > -1; j--)
b[i] |= (1 << j) * a2[8 * (i + 1) - j - 1];
output(b[i]);
}
}