結果

問題 No.3161 Find Presents
ユーザー nouka28
提出日時 2025-05-23 19:56:51
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
TLE  
実行時間 -
コード長 1,339 bytes
コンパイル時間 5,572 ms
コンパイル使用メモリ 334,932 KB
実行使用メモリ 200,844 KB
平均クエリ数 4.10
最終ジャッジ日時 2025-05-23 19:57:12
合計ジャッジ時間 11,601 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 4 TLE * 1 -- * 75
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;

#include<atcoder/all>
using namespace atcoder;
using mint=atcoder::modint998244353;

// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")

#define int long long

#define rep(i,n) for(int i=0;i<(n);i++)
#define rng(i,l,r) for(int i=(l);i<(r);i++)
#define rrep(i,n) for(int i=(n)-1;i>=0;i--)
#define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--)

#define fi first
#define se second
#define all(x) (x).begin(),(x).end()

// struct fast_io{fast_io(){std::cin.tie(nullptr)->sync_with_stdio(false);}}_;

signed main(){
	vector<pair<int,int>> ans;
	auto slv=[&](auto slv,int li,int ri,int lj,int rj)->void {
		if(ri-li==1&&rj-lj==1){
			ans.push_back({li,lj});
			return;
		}
		int mi=(li+ri)/2,mj=(lj+rj)/2;

		{
			cout<<"? "<<li<<" "<<mi-1<<" "<<lj<<" "<<mj-1<<endl;
			int x;cin>>x;
			if(x)slv(slv,li,mi,lj,mj);
		}
		{
			cout<<"? "<<mi<<" "<<ri-1<<" "<<lj<<" "<<mj-1<<endl;
			int x;cin>>x;
			if(x)slv(slv,mi,ri,lj,mj);
		}
		{
			cout<<"? "<<li<<" "<<mi-1<<" "<<mj<<" "<<rj-1<<endl;
			int x;cin>>x;
			if(x)slv(slv,li,mi,mj,rj);
		}
		{
			cout<<"? "<<mi<<" "<<ri-1<<" "<<mj<<" "<<rj-1<<endl;
			int x;cin>>x;
			if(x)slv(slv,mi,ri,mj,rj);
		}
	};

	slv(slv,0,1000001,0,1000001);

	cout<<"!"<<" "<<ans.size()<<endl;
	for(auto&&[x,y]:ans){
		cout<<x<<" "<<y<<endl;
	}
	return 0;
}
0