| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1308862 | thuhienne | Data Transfer (IOI19_transfer) | C++20 | 194 ms | 1728 KiB |
#include "transfer.h"
#include <bits/stdc++.h>
#define re exit(0);
using namespace std;
vector <int> get_attachment(vector <int> source) {
int n = source.size();
int temp = 0;
for (int i = 0;i < n;i++) temp = (temp + source[i]) % 2;
vector <int> encode;
encode.push_back(temp);encode.push_back(temp);
for (int bit = 0;bit < __lg(n) + 1;bit++) {
int sum = 0;
for (int i = 0;i < n;i++) if (i >> bit & 1) {
sum = (sum + source[i]) % 2;
}
encode.push_back(sum);
}
return encode;
}
vector <int> retrieve(vector <int> data) {
int n;
if (data.size() == 71) n = 63;
else n = 255;
vector <int> source;
for (int i = 0;i < n;i++) source.push_back(data[i]);
if (data[n] != data[n + 1]) return source;
//check xem corupt o n hay k
int oddeven = data[n];
bool corupt = 0;int temp = 0;
for (int i = 0;i < n;i++) temp = (temp + source[i]) % 2;
//corupt o k
if (temp == oddeven) return source;
//corupt o n -> khong corupt o k
int dick = 0;
for (int bit = 0;bit < __lg(n) + 1;bit++) {
int sum = 0;
for (int i = 0;i < n;i++) if (i >> bit & 1) {
sum = (sum + source[i]) % 2;
}
int expected = data[n + 2 + bit];
if (sum != expected) {
dick += 1 << bit;
}
}
source[dick] ^= 1;
return source;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
