Submission #30994270
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
template <class T, int W> int sweep(vector<T>& c) {
int n = (int)c.size(), rank = 0;
for (int d = W - 1; d >= 0; --d) {
int k = rank;
while (k < n and !(c[k] >> d & 1)) {
k += 1;
}
if (k < n) {
swap(c[k], c[rank]);
for (int i = rank + 1; i < n; ++i) {
if (c[i] >> d & 1) {
c[i] ^= c[rank];
}
}
rank += 1;
}
}
return rank;
}
template <class T, int W> T maximize(vector<T> c, T x) {
int n = sweep<T, W>(c);
for (int i = 0; i < n; ++i) {
x = max(x, x ^ c[i]);
}
return x;
}
constexpr int W = 30;
int main() {
int n, k;
cin >> n >> k;
vector<long long> c(n);
for (int i = 0; i < n; ++i) {
long long a, b;
cin >> a >> b;
c[i] = (a << W) | b;
}
n = sweep<long long, 2 * W>(c);
if ((c.back() >> W) > k) {
cout << -1 << '\n';
return 0;
}
vector<int> a(n), b(n);
for (int i = 0; i < n; ++i) {
a[i] = c[i] >> W;
b[i] = c[i] & ((1 << W) - 1);
}
int m = 0;
while (m < n and a[m] > 0) {
m += 1;
}
int ans = 0, fixed_a = 0, fixed_b = 0;
for (int i = 0; i < m; ++i) {
int msb = 1;
while ((msb << 1) <= a[i]) {
msb <<= 1;
}
if ((fixed_a | (msb - 1)) <= k) {
ans = max(ans, maximize<int, 30>(vector<int>(b.begin() + i + 1, b.end()), fixed_b));
fixed_a ^= a[i];
fixed_b ^= b[i];
} else if (((fixed_a ^ a[i]) | (msb - 1)) <= k) {
ans = max(ans, maximize<int, 30>(vector<int>(b.begin() + i + 1, b.end()), fixed_b ^ b[i]));
} else {
if (fixed_a & msb) {
fixed_a ^= a[i];
fixed_b ^= b[i];
}
}
}
if (fixed_a <= k) {
ans = max(ans, maximize<int, 30>(vector<int>(b.begin() + m, b.end()), fixed_b));
}
cout << ans << '\n';
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - Xor Cards |
| User | KoD |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 2166 Byte |
| Status | AC |
| Exec Time | 7 ms |
| Memory | 3608 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example_00.txt, example_01.txt, example_02.txt |
| All | example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example_00.txt | AC | 6 ms | 3560 KiB |
| example_01.txt | AC | 2 ms | 3484 KiB |
| example_02.txt | AC | 3 ms | 3568 KiB |
| test_00.txt | AC | 3 ms | 3440 KiB |
| test_01.txt | AC | 4 ms | 3608 KiB |
| test_02.txt | AC | 4 ms | 3532 KiB |
| test_03.txt | AC | 3 ms | 3524 KiB |
| test_04.txt | AC | 7 ms | 3376 KiB |
| test_05.txt | AC | 3 ms | 3572 KiB |
| test_06.txt | AC | 4 ms | 3516 KiB |
| test_07.txt | AC | 2 ms | 3568 KiB |
| test_08.txt | AC | 3 ms | 3516 KiB |
| test_09.txt | AC | 2 ms | 3464 KiB |
| test_10.txt | AC | 2 ms | 3452 KiB |
| test_11.txt | AC | 2 ms | 3576 KiB |
| test_12.txt | AC | 2 ms | 3456 KiB |
| test_13.txt | AC | 3 ms | 3572 KiB |
| test_14.txt | AC | 4 ms | 3576 KiB |
| test_15.txt | AC | 4 ms | 3464 KiB |
| test_16.txt | AC | 3 ms | 3508 KiB |
| test_17.txt | AC | 2 ms | 3388 KiB |
| test_18.txt | AC | 3 ms | 3512 KiB |
| test_19.txt | AC | 2 ms | 3404 KiB |
| test_20.txt | AC | 2 ms | 3460 KiB |
| test_21.txt | AC | 3 ms | 3568 KiB |
| test_22.txt | AC | 2 ms | 3600 KiB |
| test_23.txt | AC | 2 ms | 3464 KiB |
| test_24.txt | AC | 2 ms | 3392 KiB |
| test_25.txt | AC | 6 ms | 3512 KiB |
| test_26.txt | AC | 5 ms | 3524 KiB |
| test_27.txt | AC | 3 ms | 3576 KiB |
| test_28.txt | AC | 2 ms | 3408 KiB |
| test_29.txt | AC | 3 ms | 3572 KiB |
| test_30.txt | AC | 3 ms | 3384 KiB |
| test_31.txt | AC | 2 ms | 3408 KiB |
| test_32.txt | AC | 2 ms | 3568 KiB |
| test_33.txt | AC | 2 ms | 3388 KiB |
| test_34.txt | AC | 3 ms | 3388 KiB |
| test_35.txt | AC | 2 ms | 3384 KiB |
| test_36.txt | AC | 2 ms | 3404 KiB |
| test_37.txt | AC | 5 ms | 3472 KiB |
| test_38.txt | AC | 4 ms | 3608 KiB |
| test_39.txt | AC | 4 ms | 3380 KiB |
| test_40.txt | AC | 4 ms | 3460 KiB |
| test_41.txt | AC | 4 ms | 3464 KiB |