QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#185563 | #4884. Battleship: New Rules | Crysfly | WA | 2ms | 5876kb | C++20 | 1.7kb | 2023-09-22 11:50:24 | 2023-09-22 11:50:25 |
Judging History
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],b[1005][1005];
int q(int x,int y){
//cout<<"q "<<x<<" "<<y<<"\n";
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^=(!b[i][j]);
return res;
}
void mark(int x,int y){
if(q(x,y)) b[x-1][y-1]=b[x][y]=b[x-1][y]=b[x][y-1]=1;
}
void solve(int x1,int x2,int y1,int y2){
// cout<<"solve "<<x1<<" "<<x2<<" "<<y1<<" "<<y2<<"\n";
if(x1==x2&&y1==y2){
cout<<"! "<<x1<<" "<<y1<<endl;
return;
}
if(x2-x1>y2-y1){
int mid=x1+x2>>1;
For(i,y1,y2-1) mark(mid+1,i);
if(chk(x1,mid,y1,y2))solve(x1,mid,y1,y2);
else solve(mid+1,x2,y1,y2);
}else{
int mid=y1+y2>>1;
For(i,x1,x2-1) mark(i,mid+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,b[i][j]=0;
if(n%2==0){
cout<<"! "<<-1<<" "<<-1<<endl;
return;
}
solve(1,n,1,n);
}
signed main()
{
int T;cin>>T;
while(T--){
work();
int x;cin>>x;
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 5668kb
input:
2 3 1 4 1 1 0 1 1 0 0 0 1 1 1
output:
! -1 -1 ? 1 4 ? 2 4 ? 3 4 ? 4 4 ? 4 1 ? 4 2 ? 1 3 ? 2 3 ? 3 1 ? 1 2 ! 2 2
result:
ok max_C=2.50, avg_C=1.25 (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 2ms
memory: 5876kb
input:
100 4 1 1 0 1 1 0 0 0 1 1 1 4 1 1 0 1 1 0 0 0 1 1 1 4 1 0 1 1 1 1 0
output:
? 1 4 ? 2 4 ? 3 4 ? 4 4 ? 4 1 ? 4 2 ? 1 3 ? 2 3 ? 3 1 ? 1 2 ! 2 2 ? 1 4 ? 2 4 ? 3 4 ? 4 4 ? 4 1 ? 4 2 ? 1 3 ? 2 3 ? 3 1 ? 1 2 ! 2 2 ? 1 4 ? 2 4 ? 3 4 ? 4 4 ? 4 1 ? 4 2 ? 4 3 ! 5 3
result:
wrong output format Unexpected end of file - int32 expected (test case 3)