QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#303692 | #7184. Transport Pluses | ucup-team2235# | TL | 0ms | 0kb | C++17 | 1.2kb | 2024-01-12 21:12:00 | 2024-01-12 21:12:01 |
answer
#include<bits/stdc++.h>
using namespace std;
const int C=960;
int K,Q,R,B,N;
vector<string> s;
void dfs(string a){
if(a.length()==8){
int c=0;
for(int i=0;i<8;i++)
if(a[i]=='B')c^=i;
if(c&1)s.emplace_back(a);
return;
}
if(R==1&&!K)K++,dfs(a+'K'),K--;
if(!Q)Q++,dfs(a+'Q'),Q--;
if(!R||R==1&&K)R++,dfs(a+'R'),R--;
if(N<2)N++,dfs(a+'N'),N--;
if(B<2)B++,dfs(a+'B'),B--;
}
int ask(string s){
cout<<s<<endl;
int x; cin>>x;
return x;
}
int main(){
ios::sync_with_stdio(false);
dfs("");
vector d(C,vector<int>(C));
for(int i=0;i<C;i++)
for(int j=0;j<C;j++)
for(int k=0;k<8;k++)
d[i][j]+=s[i][k]==s[j][k];
string g; while(cin>>g){
if(g[0]=='E')break;
int x; cin>>x;
vector<int> p(C);
iota(p.begin(),p.end(),0);
while(1){
if(p.size()==1){ask(s[p[0]]); break;}
int f=C+1,r;
for(int i=0;i<C;i++){
vector<int> c(9);
for(int j:p)c[d[i][j]]++;
int m=*max_element(c.begin(),c.end());
if(m<f)f=m,r=i;
}
int x=ask(s[r]);
vector<int> v;
for(int i:p)if(d[i][r]==x)v.emplace_back(i);
p=v;
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded
input:
1 2 1 1 5 3 6 2
output:
RQKNBBRN RQBKNNRB NBBRNQKR QNBRKRNB NNBRQBKR RQKNBBRN QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRKRNNBB QRK...