QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#185552 | #4884. Battleship: New Rules | Crysfly | TL | 0ms | 0kb | C++20 | 1.5kb | 2023-09-22 11:37:08 | 2023-09-22 11:37:09 |
answer
// what is matter? never mind.
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
inline int read()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;
#define maxn 400005
#define inf 0x3f3f3f3f
int n;
int vis[1005][1005];
int q(int x,int y){
if(x<1||y<1||x>=n||y>=n)return 0;
if(~vis[x][y])return vis[x][y];
cout<<"? "<<x<<" "<<y<<endl;
cin>>vis[x][y]; return vis[x][y];
}
int Q(int x,int y){
For(i,0,1)For(j,0,1)if(q(x+i,y+j))return 1;
return 0;
}
bool chk(int x1,int x2,int y1,int y2){
int res=0;
For(i,x1,x2)For(j,y1,y2)res^=Q(i,j);
return res;
}
void solve(int x1,int x2,int y1,int y2){
if(x1==y1&&x2==y2){
cout<<x1-1<<" "<<y1-1<<endl;
return;
}
if(x2-x1>y2-y1){
int mid=x1+x2>>1;
if(chk(x1,mid,y1,y2))solve(x1,mid,y1,y2);
else solve(mid+1,x2,y1,y2);
}else{
int mid=y1+y2>>1;
if(chk(x1,x2,y1,mid))solve(x1,x2,y1,mid);
else solve(x1,x2,mid+1,y2);
}
}
void work()
{
cin>>n;++n;
For(i,0,n)For(j,0,n)vis[i][j]=-1;
if(n%2==0){
cout<<-1<<" "<<-1<<endl;
return;
}
solve(1,1,n,n);
}
signed main()
{
int T;cin>>T;
while(T--){
work();
int x;cin>>x;
}
return 0;
}
詳細信息
Test #1:
score: 0
Time Limit Exceeded
input:
2 3
output:
-1 -1