| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1363793 | nerrrmin | Data Transfer (IOI19_transfer) | C++20 | 1 ms | 580 KiB |
#include "transfer.h"
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
int get_xor(int bit, vector < int > v)
{
int res = 0;
for (int i = 0; i < v.size(); ++ i)
{
int has = ((1 << bit) & i);
if(has)res = (res ^ v[i]);
}
return res;
}
std::vector<int> get_attachment(std::vector<int> source) {
int n, k;
vector < int > v = source;
std::vector<int> res = source;
n = (int)source.size();
assert(n == 63);
if(n == 63)k = 6;
else k = 8;
for (int bit = 0; bit < k; ++ bit)
{
int x = get_xor(bit, v);
res.pb(x);
}
int total = 0;
for (int i = 0; i < n; ++ i)
total = (total ^ v[i]);
res.pb(total);
return res;
}
std::vector<int> retrieve(std::vector<int> data)
{
int n, k;
vector < int > ans;
int sz = data.size();
if(sz == 255 + 9)n = 255;
else n = 63;
//assert(sz == 63 + 7);
int total = 0;
for (int i = 0; i < n; ++ i)
{
ans.pb(data[i]);
total = (total ^ data[i]);
}
if(n == 255)k = 8;
else k = 6;
if(data.back() == total)return ans;
int problem = 0, j = n;
for (int bit = 0; bit < k; ++ bit)
{
int last = data[j];
int curr = get_xor(bit, ans);
if(last != curr)
{
problem += (1 << bit);
}
j ++;
}
ans[problem] = 1 - ans[problem];
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
