Submission #1282939

#TimeUsernameProblemLanguageResultExecution timeMemory
1282939wenbangThe Big Prize (IOI17_prize)C++20
97.78 / 100
18 ms416 KiB
#include "prize.h"
#include <algorithm>
#include <iostream>
#include <utility>
#include <vector>

#ifdef LOCAL
#include "../print.h"
#else
template <typename... Args> inline void print(const Args&... args) {}
inline void                             newline() {}
#endif

using ll  = long long;
using pii = std::pair<int, int>;
#define endl                       '\n'
#define FOR1(n)                    for (int _ = 0; _ < n; _++)
#define FOR2(i, n)                 for (int i = 0; i < n; i++)
#define FOR3(i, a, b)              for (int i = a; i < b; i++)
#define overload3(a, b, c, d, ...) d
#define FOR(...)                   overload3(__VA_ARGS__, FOR3, FOR2, FOR1)(__VA_ARGS__)

using namespace std;

int search(int l, int r, pii left, pii right) {
    if (l > r) {
        return -1;
    }
    int         m    = (l + r) / 2;
    vector<int> c    = ask(m);
    pii         curr = {c [0], c [1]};
    if (c [0] == 0 && c [1] == 0) {
        return m;
    }
    if (l == r) {
        return -1;
    }
    int ret = -1;
    if (c [1] > 0 && curr != right) {
        ret = search(m + 1, r, curr, right);
    }
    if (ret == -1 && c [0] > 0 && curr != left) {
        ret = search(l, m - 1, left, curr);
    }
    return ret;
}

int find_best(int n) {
    return search(0, n - 1, {-1, -1}, {-1, -1});
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...