| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1287633 | VMaksimoski008 | Data Transfer (IOI19_transfer) | C++20 | 158 ms | 1732 KiB |
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> get_attachment(vector<int> source) {
int n = source.size();
// cout << "! " << n << endl;
vector<int> ans;
int k = (n == 63 ? 6 : 8);
int X = 0;
for(int i=0; i<n; i++)
if(source[i]) X ^= (i+1);
int cnt = 0;
for(int i=0; i<k; i++) {
if(X & (1 << i)) ans.push_back(1), cnt++;
else ans.push_back(0);
}
ans.push_back(cnt & 1);
// cout << "? " << ans.size() << endl;
return ans;
}
vector<int> retrieve(vector<int> data) {
vector<int> ans;
int n = (data.size() == 70 ? 63 : 255);
int k = (n == 63 ? 6 : 8);
// cout << "! " << data.size() << endl;
int X = 0;
for(int i=n; i<n+k; i++)
if(data[i]) X += (1 << (i-n));
if(__builtin_parity(X) != data.back()) {
for(int i=0; i<n; i++) ans.push_back(data[i]);
return ans;
}
int Y = 0;
for(int i=0; i<n; i++)
if(data[i]) Y ^= (i+1);
for(int i=0; i<n; i++) {
if((Y ^ (i+1)) == X) {
data[i] ^= 1;
break;
}
}
for(int i=0; i<n; i++)
ans.push_back(data[i]);
return ans;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
