1479A - Searching Local Minimum - CodeForces Solution


binary search interactive ternary search *1700

Please click on ads to support us..

C++ Code:

#include <iostream>
#include <climits>

using namespace std;

#define N 114514

int l, r;
int n;
int mid;
int t1, t2, t3;
int mem[N];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n;
    mem[0]=mem[n+1]=INT_MAX;
    l = 0;
    r = n + 1;
    while (r > l) {
        mid = l + r >> 1;
        for (int i = -1; i < 2; ++i) {
            if (!mem[mid + i]) {
                cout << "? " << mid + i << endl;
                cout.flush();
                cin >> t1;
                mem[mid+i]=t1;
            }
        }
        t1=mem[mid-1];
        t2=mem[mid];
        t3=mem[mid+1];
        if (t2 < t1 && t2 < t3) {
            cout << "! " << mid << endl;
            return 0;
        } else if (t1 < t2) {
            r = mid;
        } else {
            l = mid + 1;
        }
    }

    return 0;
}


Comments

Submit
0 Comments
More Questions

712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key
1705A - Mark the Photographer
1707A - Doremy's IQ
1706B - Making Towers
1325B - CopyCopyCopyCopyCopy
1649C - Weird Sum
1324B - Yet Another Palindrome Problem
525A - Vitaliy and Pie
879A - Borya's Diagnosis
1672B - I love AAAB
1673A - Subtle Substring Subtraction
1345A - Puzzle Pieces
711A - Bus to Udayland
779B - Weird Rounding
1703D - Double Strings
1704C - Virus