| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1347433 | nadavisraeli | Hack (APIO25_hack) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
int hack() {
int m = 1;
while (1) {
vector<long long> vec;
for (int i = 0; i < m; i++) vec.push_back(i);
for (int i = 1; i <= m; i++) vec.push_back(i * m);
if (collisions(vec)) break;
m *= 2;
}
if (m == 1) return 1;
int l = 1, h = m;
while (l < h) {
int mid = (l + h) / 2;
vector<long long> vec;
for (int i = 0; i < m; i++) vec.push_back(i);
for (int i = l; i <= mid; i++) {
vec.push_back(i * m);
}
if (collisions(vec)) {
h = mid;
} else {
l = mid + 1;
}
}
int q = l;
l = 0, h = m - 1;
while (l < h) {
int mid = (l + h) / 2;
vector<long long> vec = {q * m};
for (int i = l; i <= mid; i++) {
vec.push_back(i);
}
if (collisions(vec)) {
h = mid;
} else {
l = mid + 1;
}
}
return q * m - l;
}