# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1165500 | gustavo_d | Data Transfer (IOI19_transfer) | C++20 | 87 ms | 1728 KiB |
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
int calcXor(vector<int> &a, int l, int r) {
int x = 0;
for (int i=l; i<=r; i++) x ^= a[i];
return x;
}
vector<int> calculateXors(vector<int> &source) {
int n = 1;
while (n < (int)source.size()) n <<= 1;
vector<int> tmp(n, 0);
for (int i=0; i<(int)source.size(); i++) tmp[i] = source[i];
vector<int> bits;
for (int b=0; (1 << b) < n; b++) {
int Xor = 0;
for (int i=0; i<n; i+=2*(1 << b)) {
Xor ^= calcXor(tmp, i, i+(1 << b)-1);
}
bits.push_back(Xor);
}
reverse(bits.begin(), bits.end());
bits.push_back(calcXor(source, 0, (int)source.size() - 1));
return bits;
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |