結果
| 問題 | 
                            No.1830 Balanced Majority
                             | 
                    
| コンテスト | |
| ユーザー | 
                             沙耶花
                         | 
                    
| 提出日時 | 2022-02-04 21:45:15 | 
| 言語 | C++17  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 700 bytes | 
| コンパイル時間 | 4,323 ms | 
| コンパイル使用メモリ | 249,820 KB | 
| 最終ジャッジ日時 | 2025-01-27 18:53:00 | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 10 WA * 15 | 
ソースコード
#include <stdio.h>
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
using mint = modint998244353;
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)
#define Inf 1000000001
void answer(int n){
	cout<<"! 1 "<<n<<endl;
	exit(0);
}
int query(int N){
	cout<<"? "<<N<<endl;
	int ret;
	cin>>ret;
	if(ret*2 == N){
		answer(N);
	}
	return ret;
}
int main(){
	int N;
	cin>>N;
	int sum = query(N-1);
	
	int ok = N-1;
	int ng = 0;
	
	while(ok-ng>1){
		int mid = (ok+ng)/2;
		int ret=  query(mid);
		if(sum!=N/2){
			if(N/2 != mid-ret)ng = mid;
			else ok = mid;
		}
		else{
			if(N/2 != ret)ng = mid;
			else ok = mid;
		}
	}
	cout<<"! "<<ok<<' '<<ok+1<<endl;
	
	return 0;
}
            
            
            
        
            
沙耶花