This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include "cave.h"
//#include "grader.h"
#define enl printf("\n")
#define case(t) printf("Case #%d: ", (t))
#define ni(n) scanf("%d", &(n))
#define nl(n) scanf("%I64d", &(n))
#define nai(a, n) for (int i = 0; i < (n); i++) ni(a[i])
#define nal(a, n) for (int i = 0; i < (n); i++) nl(a[i])
#define pri(n) printf("%d\n", (n))
#define prl(n) printf("%I64d\n", (n))
#define pii pair<int, int>
#define pll pair<long long, long long>
#define vii vector<pii>
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
typedef long long int ll;
const double pi = acos(-1);
const int MOD = 1e9 + 9;
const int INF = 1e9 + 7;
const int MAXN = 3e5 + 5;
const double eps = 1e-9;
int ask(int arr[]) {
int cnt = tryCombination(arr);
if (cnt == -1) cnt = INF;
return cnt;
}
void exploreCave(int n) {
int arr[n], ind[n], tmp[n];
memset(arr, 0, sizeof arr);
memset(tmp, 0, sizeof tmp);
vii v;
for (int i = 0; i < n; i++) {
int lo = 0, hi = n - 1;
int fl = (int) (ask(arr) == i);
while (lo <= hi) {
int mi = (lo + hi) / 2;
memset(tmp, -1, sizeof tmp);
for (int j = lo; j <= hi; j++)
tmp[j] = fl ^ (j / (mi + 1));
for (auto it: v)
tmp[it.fi] = it.se;
if (ask(tmp) > i)
hi = mi - 1;
else
lo = mi + 1;
}
v.pb({lo, fl});
arr[lo] = fl;
tmp[lo] = fl;
ind[lo] = i;
}
answer(arr, ind);
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |