| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1299466 | SSKMF | Data Transfer (IOI19_transfer) | C++20 | 6 ms | 1724 KiB |
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> get_attachment (vector <int> dorit)
{
int suma = 0 , limita = (dorit.size() == 63 ? (1 << 6) : (1 << 8));
for (int indice = 0 ; indice < (int)dorit.size() ; indice++) {
if (dorit[indice])
{ suma ^= indice; }
}
if (dorit[0])
{ suma ^= limita; }
vector <int> rezultat;
for (int putere = 1 ; putere <= limita ; putere <<= 1)
{
rezultat.push_back((suma & putere) ? 1 : 0);
if (suma & putere) { suma ^= limita; }
}
return rezultat;
}
vector <int> retrieve (vector <int> primit)
{
const int adaos = (primit.size() == 70 ? 7 : 9);
int setati = primit[0] , suma = 0 , __suma = 0;
for (int indice = (int)primit.size() - adaos ; indice < (int)primit.size() - 1 ; indice++) {
if (primit[indice])
{
__suma |= (1 << (indice - ((int)primit.size() - adaos)));
setati++;
}
}
for (int indice = 0 ; indice < (int)primit.size() - adaos ; indice++) {
if (primit[indice])
{ suma ^= indice; }
}
if (suma == __suma && (setati & 1) != primit.back())
{ primit[0] ^= 1; }
else
if (suma != __suma && (setati & 1) == primit.back())
{ primit[suma ^ __suma] ^= 1; }
return vector <int> (primit.begin() , primit.end() - adaos);
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
