Searching Local Minimum
非常有意思的一个二分题
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N = 100010;
int n;
int a[N];
void er(){
int ml, mL;
int l = 1, r = n;
while(l < r) {
int m = (l + r) >> 1;
printf("? %d\n", m);
fflush(stdout);
scanf("%d", &ml);
printf("? %d\n", m+1);
fflush(stdout);
scanf("%d", &mL);
if(ml < mL) r = m;
else l = m + 1;
}
printf("! %d\n", l);
}
int main() {
scanf("%d", &n);
er();
return 0;
}