#include "hack.h"
#include <vector>
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int B = 27480;
const int inf = 1e9;
int ans;
ll collisions(vector<ll> v) ;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rand(ll n){
ll x = rng();
return abs(x) % n + 1;
}
void expiriment(int x){
vector<ll> v;
v.push_back(1);
v.push_back(1 + x);
if((collisions(v) == 1)) ans = min(ans , x);
}
ll query(vector<int> a , vector<int> b){
set<int> st;
for(auto to : a) st.insert(to);
for(auto to : b) st.insert(to);
vector<ll> q;
for(auto to : st) q.push_back(to);
return collisions(q);
}
int hack(){
//
vector<int> a , b;
for(int i = 1;i <= B; ++ i) a.push_back(i);
for(int i = (inf / 2 / B) * B; i <= inf + B; i += B) b.push_back(i);
while(a.size() > 1 or b.size() > 1){
int sa = a.size() , sb = b.size();
int ma = sa / 2 , mb = sb / 2;
if(a.size() > b.size()){
vector<int> la;
vector<int> ra;
for(int i = 0;i < ma; ++ i) la.push_back(a[i]);
for(int i = ma;i < sa; ++ i) ra.push_back(a[i]);
if(query(ra , b)) a = ra;
else a = la;
}
else{
vector<int> lb;
vector<int> rb;
for(int i = 0;i < mb; ++ i) lb.push_back(b[i]);
for(int i = mb;i < sb; ++ i) rb.push_back(b[i]);
if(query(lb , a)) b = lb;
else b = rb;
}
}
ll d = abs(a.front() - b.front());
ans = inf;
for(ll i = 1;i * i <= d; ++ i){
if(d % i == 0){
expiriment(i);
if(d / i != i and d / i <= 1e9) expiriment(d / i);
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |