为什么WA?
  • 板块UVA12740 Stone Age
  • 楼主rzh123
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/19 16:54
  • 上次更新2023/11/4 10:02:15
查看原帖
为什么WA?
237530
rzh123楼主2021/8/19 16:54
#include <iostream>
#define JOB 50007
using namespace std;
int v;
int pcnt,tcnt,home[JOB],exist[JOB];
struct Tribe{
	int id,cnt;
}t[JOB];
inline int getjob(){
	int vtmp;
	cout<<"Getjob\n"<<flush;
	cin>>vtmp;
	return vtmp;
}
inline bool query(int x,int y){
	int qtmp;
	cout<<"Query "<<x<<' '<<y<<'\n'<<flush;
	cin>>qtmp;
	return qtmp;
}
inline void answer(int x){
	cout<<"Answer "<<x<<'\n'<<flush;
}
inline void add(){
	int f=1;
	++pcnt;
	exist[pcnt]=1;
	for(int i=1;i<=tcnt;++i){
		if(query(pcnt,t[i].id)){
			home[pcnt]=i,
			++t[i].cnt,
			f=0;
			break;
		}
	}
	if(f){
		++tcnt;
		home[pcnt]=tcnt,
		t[tcnt].id=pcnt,
		t[tcnt].cnt=1;
	}
}
inline void del(int x){
	int tmp=home[x];
	exist[x]=0,
	--t[tmp].cnt;
	if(t[tmp].id==x){
		for(register int i=1;i<=pcnt;++i){
			if(exist[i]&&home[i]==tmp){
				t[tmp].id=i;
				return;
			}
		}
		t[tmp].id=0;
	}
}
inline void ans(){
	if(!tcnt){
		answer(0);
		return;
	}
	int mx=-1,mxi=-1,mxcnt=-1;
	for(register int i=1;i<=tcnt;++i){
		if(t[i].cnt>mx){
			mx=t[i].cnt,
			mxi=i,
			mxcnt=1;
		}
		else if(t[i].cnt==mx){
			++mxcnt;
		}
	}
	if(mxcnt==1){
		answer(t[mxi].id);
	}
	else{
		answer(0);
	}
}
int main(){
	while(1){
		v=getjob();
		if(v==0){
			add();
		}
		else if(v==-1){
			ans();
		}
		else if(v==-2){
			break;
		}
		else{
			del(v);
		}
	}
}

2021/8/19 16:54
加载中...