求助 ARC A
  • 板块灌水区
  • 楼主Brainless_zxc
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/9/23 17:35
  • 上次更新2024/9/23 20:22:31
查看原帖
求助 ARC A
661274
Brainless_zxc楼主2024/9/23 17:35
#include<bits/stdc++.h>
using namespace std;
int n,m,q,shu[51][20],you[51][20],sizeyou[51],di[51][20],sizedi[51],qing,wei,ww;
int main(){
	cin>>n>>m>>q;
	for(int i=1;i<=49;i++){
		you[i][1]=(i-1)*19+1;
		sizeyou[i]=1;
		for(int j=1;j<=18;j++){
			cout<<"? "<<(i-1)*19+1<<' '<<(i-1)*19+j+1<<'\n';
			cin>>qing;
			if(!qing){
				sizeyou[i]++;
				you[i][sizeyou[i]]=(i-1)*19+j+1;
			}
			else{
				sizedi[i]++;
				di[i][sizedi[i]]=(i-1)*19+j+1;
			}
		}
		if(sizeyou[i]>sizedi[i]){
			swap(sizeyou[i],sizedi[i]);
			swap(you[i],di[i]);
		}
	}
	sizeyou[50]=1;
	you[50][1]=932;
	for(int i=933;i<=n;i++){
		cout<<"? "<<932<<' '<<i<<'\n';
		cin>>qing;
		if(!qing){
			sizeyou[50]++;
			you[50][sizeyou[50]]=i;
		}
		else{
			sizedi[50]++;
			di[50][sizedi[50]]=i;
		}
	}
	if(sizeyou[50]>sizedi[50]){
		swap(sizeyou[50],sizedi[50]);
		swap(you[50],di[50]);
	}
	for(int i=1;i<=49;i++){
		if(sizeyou[i]==9){
			wei=i;
		}
	}
	for(int i=1;i<=50;i++){
		if(sizeyou[i]==1){
			ww=i;
		}
	}
	if(wei&&!ww){
		cout<<"! ";
		for(int i=1;i<=10;i++){
			cout<<di[wei][i]<<' ';
		}
		exit(0);
	}
	cout<<"! ";
	for(int i=1;i<=50;i++){
		for(int j=1;j<=sizeyou[i];j++){
			cout<<you[i][j]<<' ';
		}
	}
	return 0;
}

想的是,注意到 Q=950Q=950,那么考虑将整堆硬币分为 1919 组。因为当有 2020 组的时候经过测试会有数据将所有假币放到一起来卡掉我的代码。

现在是 WA #1。绷。

2024/9/23 17:35
加载中...