# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1140344 | theoutsider6606 | 앵무새 (IOI11_parrots) | C++20 | 0 ms | 0 KiB |
void encode(int N, int M[]) {
int mask;
for(int arrePos = 0; arrePos < N; arrePos++){
for(int subDiv = 0; subDiv <= 3; subDiv++){
//crearMask
mask = ((1 << 2) - 1);
mask = (mask << (subDiv * 2));
//Agregar Valor
mask = M[arrePos] & mask;
mask = (mask >> (subDiv * 2));
mask <<= 2;
//Agregar SubDivisión
mask += subDiv;
mask <<= 4;
//Agregar Pos
mask += arrePos;
send(mask);
}
}
}
void decode(int N, int L, int X[]) {
int newArre[N + 2] = {};
int arrePos, subDiv, value, obj;
for(int i = 0; i < L; i++){
//Decodifica
obj = X[i];
arrePos = ((1 << 4) - 1) & obj;
subDiv = (3 << 4) & obj;
subDiv >>= 4;
obj >>= 6;
value = (obj << (subDiv * 2));
//Imprime en M
newArre[arrePos] += value;
}
for(int i = 0; i < N; i++)
output(newArre[i]);
}