#include <bits/stdc++.h>
#include "minerals.h"
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define fio ios_base::sync_with_stdio(0);cin.tie(0);
#define ll long long
#define en cin.close();return 0;
#define pb push_back
#define fi first//printf("%lli\n",cur);
#define se second//scanf("%lli",&n);
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N = 2*43005;
int n1, cur;
bool is[N];
int q(int x)
{
is[x]^=1;
return cur=Query(x);
}
void go(vector<int> &a, vector<int> &b)
{
random_shuffle(a.begin(),a.end());
random_shuffle(b.begin(),b.end());
assert(a.size()==b.size());
int n = a.size(), mid = min(n - 1, (int)ceil(0.378*(double)n));
if(n==1)
Answer(a[0],b[0]);
else
{
vector<int> la, ra, lb, rb;
//sort(a.begin(),a.end(),[&](int &i, int &j){return (is[i]>is[j]);});
for(int i = 0;i<n;i++)
{
if(i<mid)
{
//if(!is[a[i]])//sort in order is[a[i]]>is[a[j]]
q(a[i]);
la.pb(a[i]);
}
else
{
//if(is[a[i]])
//q(a[i]);
ra.pb(a[i]);
}
}
for(int i = 0, lst=cur;i<n;i++)
{
if(lb.size()==mid)
{
rb.pb(b[i]);
continue;
}
if(rb.size()==n-mid)
{
lb.pb(b[i]);
continue;
}
int t = q(b[i]);
if(t==lst)
lb.pb(b[i]);
else
rb.pb(b[i]);
lst=t;
}
go(la,lb);
go(ra,rb);
}
}
void Solve(int n)
{
n1=cur=n;
vector<int> a, b;
for(int i = 1, lst = 0;i<=2*n;i++)
{
int t = q(i);
if(t==lst)
b.pb(i);
else
a.pb(i);
lst=t;
}
srand(rng());
go(a,b);
}
Compilation message
minerals.cpp: In function 'void go(std::vector<int>&, std::vector<int>&)':
minerals.cpp:50:25: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
50 | if(lb.size()==mid)
| ~~~~~~~~~^~~~~
minerals.cpp:55:25: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
55 | if(rb.size()==n-mid)
| ~~~~~~~~~^~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
336 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong Answer [5] |
2 |
Halted |
0 ms |
0 KB |
- |