#include "Alice.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<pair<int, int>> Alice() {
const int kBits = 60;
const int kBuc = 83;
const int kN = kBits * kBuc + 2;
const int kSeed = 27;
ll x = setN(kN);
vector<pair<int, int>> edg;
auto addEdge = [&](int u, int v) -> void {
edg.emplace_back(u, v);
};
addEdge(1, 2);
int u = 3;
mt19937 rng(kSeed);
auto addBit = [&](int i) -> void {
bool b = x >> i & 1ll;
for(int _ = 0; _ < kBuc; _++) {
uint32_t rval = rng();
addEdge(u, (rval + b) % (u - 1) + 1);
u++;
}
};
for(int i = 0; i < kBits; i++) {
addBit(i);
}
random_shuffle(edg.begin(), edg.end());
return edg;
}
#include "Bob.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll Bob(vector<pair<int, int>> edg){
const int kBits = 60;
const int kBuc = 83;
const int kSeed = 27;
sort(edg.begin(), edg.end());
auto contains = [&](int u, int v) -> bool {
return binary_search(edg.begin(), edg.end(), make_pair(u, v));
};
int u = 3;
ll x = 0;
mt19937 rng(kSeed);
auto findBit = [&]() -> ll {
ll res = 0;
for(int _ = 0; _ < kBuc; _++) {
uint32_t rval = rng();
for(bool b : {false, true}) {
if(contains(u, (rval + b) % (u - 1) + 1)) {
res = b;
}
}
u++;
}
return res;
};
for(int i = 0; i < kBits; i++) {
x |= findBit() << i;
}
return x;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
804 KB |
Incorrect answer. |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
804 KB |
Incorrect answer. |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
804 KB |
Incorrect answer. |
2 |
Halted |
0 ms |
0 KB |
- |