QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#185563#4884. Battleship: New RulesCrysflyWA 2ms5876kbC++201.7kb2023-09-22 11:50:242023-09-22 11:50:25

Judging History

你现在查看的是最新测评结果

  • [2023-09-22 11:50:25]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:5876kb
  • [2023-09-22 11:50:24]
  • 提交

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;
}

详细

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)