QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#250261 | #7179. Fischer's Chess Guessing Game | kilo_tobo_tarjen# | RE | 0ms | 0kb | C++20 | 2.3kb | 2023-11-13 00:38:41 | 2023-11-13 00:38:42 |
answer
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
vector<int>ve[maxn];
int dep[maxn];
string s[maxn],q[maxn];
vector<string> all;
void getlegal()
{
vector<int> a(8);iota(a.begin(),a.end(),0);
string s="RQKBBNRN";
do{
string ss;
for(int i=0;i<8;i++)ss.push_back(s[a[i]]);
bool flag=true;
int g=0,k;
vector<int> v;
for(int i=0;i<8;i++){
if(ss[i]=='K')k=i;
if(ss[i]=='R')v.push_back(i);
if(ss[i]=='B')g+=i;
}
if(g%2==1&&k>v[0]&&k<v[1])all.push_back(ss);
}while(next_permutation(a.begin(),a.end()));
sort(all.begin(),all.end());
all.resize(unique(all.begin(),all.end())-all.begin());
}
int f(string s1,string s2){
int res=0;
for(int i=0;i<8;i++)res+=s1[i]==s2[i];
return res;
}
int tot=0;
int dfs(vector<string>&now,int d){
if((int)now.size()==1){
s[++tot]=now[0];
return tot;
}
if(now.empty())return -1;
assert(d<=5);
int id=++tot;
int mi=1e9;
string tt;
for(auto &it:all){
vector<string> p[9];
int g=0;
for(auto &t:now){
int z=f(it,t);
p[z].push_back(t);
g=max((int)p[z].size(),g);
}
if(g<mi){
mi=g;tt=it;
}
}
vector<string> p[9];
for(auto &t:now){
int z=f(tt,t);
p[z].push_back(t);
}
q[id]=tt;
for(int i=0;i<9;i++)ve[id].push_back(dfs(p[i],d+1));
cout<<"id="<<id<<"\n";
for(auto it:ve[id])cout<<it<<" ";;cout<<"\n";
return id;
}
void init()
{
getlegal();
dfs(all,1);
}
struct gettime{
clock_t star,ends;
void begin(){
star = clock();
}
void end(){
ends = clock();
cout <<"Running Time : "<<(double)(ends - star)/ CLOCKS_PER_SEC << endl;
}
} tim;
int query(string s){
cout<<s<<endl;
int x;cin>>x;return x;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
tim.begin();
init();
string z;cin>>z;
int T; cin>>T;
while(T--){
int now=1;
while(s[now].empty()){
// cout<<"now="<<now<<"\n";
int g=query(q[now]);
now=ve[now][g];
}
query(s[now]);
}
cin>>z;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Runtime Error
input:
GAME 1
output:
id=5 -1 6 7 -1 -1 -1 -1 -1 -1 id=8 -1 9 -1 10 -1 -1 -1 -1 -1 id=11 -1 12 13 -1 -1 -1 -1 -1 -1 id=14 -1 15 -1 -1 16 -1 -1 -1 -1 id=17 -1 -1 18 19 -1 -1 -1 -1 -1 id=3 -1 4 5 8 11 14 17 -1 20 id=22 23 24 25 26 -1 -1 -1 -1 -1 id=27 28 29 30 -1 -1 -1 -1 -1 -1 id=31 32 33 34 35 36 -1 -1 -1 -1 id=...