ログインしてください。
提出 #8588376
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define _MACRO(_1, _2, _3, NAME, ...) NAME
#define _repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define _rep(i,n) _repl(i,0,n)
#define rep(...) _MACRO(__VA_ARGS__, _repl, _rep)(__VA_ARGS__)
#define pb push_back
#define all(x) begin(x),end(x)
#define uniq(x) sort(all(x)),(x).erase(unique(all(x)),end(x))
#ifdef LOCAL
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
void _dbg(string){cerr<<endl;}
template<class H,class... T> void _dbg(string s,H h,T... t){int l=s.find(',');cerr<<s.substr(0,l)<<" = "<<h<<", ";_dbg(s.substr(l+1),t...);}
template<class T,class U> ostream& operator<<(ostream &o, const pair<T,U> &p){o<<"("<<p.first<<","<<p.second<<")";return o;}
template<class T> ostream& operator<<(ostream &o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;}
#else
#define dbg(...) {}
#endif
bool debug = false;
string ans_debug;
bool ask(const vector<int>& v){
if(debug){
dbg(v);
assert(v.size() == ans_debug.size() / 2);
int r = 0,b=0;
for(auto x : v){
if(ans_debug[x]=='R') r++;
else b++;
}
return r > b;
} else {
cout << "?";
for(auto x : v) cout <<" " << x+1;
cout << endl;
string s;
cin>>s;
return s == "Red";
}
}
int main(int argc, char* argv[]){
if(argc==2){
debug = true;
ans_debug = string(argv[1]);
}
int n;
cin>>n;
if(n==1) {
bool r = ask({0});
if(r) cout << "! RB";
else cout << "! BR";
cout << endl;
return 0;
}
int RED = 1;
int BLK = 0;
int UK = -1;
vector<int> ans(2*n, UK);
// find half set
vector<int> h1,h2;
auto f = [&](int i) {
vector<int> cand;
rep(j,n) cand.pb(i+j);
return ask(cand);
};
int l=0, r=n;
bool il = f(0);
bool ir = !il;
while(r-l>1) {
int m = (l+r)/2;
bool im = f(m);
if(il == im) l = m;
else r = m;
}
rep(i,n-1) h1.pb(l+i+1);
rep(i,n-1) h2.pb((n+r+i)%(2*n));
ans[l] = (il ? RED : BLK);
ans[n+l] = (il ? BLK : RED);
rep(i,2*n) if(ans[i] == UK){
bool use_h1 = true;
for(auto x : h1) if(x == i) use_h1 = false;
vector<int> q = (use_h1) ? h1 : h2;
q.pb(i);
bool rep = ask(q);
ans[i] = rep ? RED : BLK;
}
cout << "! ";
rep(i,2*n) cout << (ans[i] == RED ? "R" : "B");
cout << endl;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Majority of Balls |
| ユーザ | tossy |
| 言語 | C++14 (GCC 5.4.1) |
| 得点 | 800 |
| コード長 | 2417 Byte |
| 結果 | AC |
| 実行時間 | 19 ms |
| メモリ | 724 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 800 / 800 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt |
| All | in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, sample_01.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| in01.txt | AC | 3 ms | 716 KiB |
| in02.txt | AC | 3 ms | 720 KiB |
| in03.txt | AC | 3 ms | 720 KiB |
| in04.txt | AC | 3 ms | 720 KiB |
| in05.txt | AC | 3 ms | 720 KiB |
| in06.txt | AC | 3 ms | 720 KiB |
| in07.txt | AC | 3 ms | 716 KiB |
| in08.txt | AC | 3 ms | 720 KiB |
| in09.txt | AC | 3 ms | 724 KiB |
| in10.txt | AC | 3 ms | 724 KiB |
| in11.txt | AC | 3 ms | 720 KiB |
| in12.txt | AC | 3 ms | 724 KiB |
| in13.txt | AC | 3 ms | 720 KiB |
| in14.txt | AC | 3 ms | 720 KiB |
| in15.txt | AC | 3 ms | 720 KiB |
| in16.txt | AC | 3 ms | 724 KiB |
| in17.txt | AC | 3 ms | 720 KiB |
| in18.txt | AC | 3 ms | 720 KiB |
| in19.txt | AC | 3 ms | 716 KiB |
| in20.txt | AC | 3 ms | 696 KiB |
| in21.txt | AC | 3 ms | 720 KiB |
| in22.txt | AC | 3 ms | 716 KiB |
| in23.txt | AC | 19 ms | 692 KiB |
| in24.txt | AC | 19 ms | 648 KiB |
| in25.txt | AC | 19 ms | 716 KiB |
| in26.txt | AC | 18 ms | 720 KiB |
| in27.txt | AC | 18 ms | 720 KiB |
| in28.txt | AC | 19 ms | 712 KiB |
| in29.txt | AC | 18 ms | 596 KiB |
| in30.txt | AC | 19 ms | 720 KiB |
| in31.txt | AC | 18 ms | 588 KiB |
| in32.txt | AC | 19 ms | 724 KiB |
| in33.txt | AC | 18 ms | 720 KiB |
| in34.txt | AC | 18 ms | 724 KiB |
| in35.txt | AC | 18 ms | 720 KiB |
| in36.txt | AC | 17 ms | 716 KiB |
| in37.txt | AC | 19 ms | 592 KiB |
| in38.txt | AC | 18 ms | 692 KiB |
| in39.txt | AC | 18 ms | 720 KiB |
| in40.txt | AC | 19 ms | 724 KiB |
| in41.txt | AC | 18 ms | 592 KiB |
| in42.txt | AC | 18 ms | 720 KiB |
| in43.txt | AC | 19 ms | 692 KiB |
| in44.txt | AC | 18 ms | 692 KiB |
| in45.txt | AC | 18 ms | 712 KiB |
| in46.txt | AC | 19 ms | 720 KiB |
| in47.txt | AC | 18 ms | 592 KiB |
| in48.txt | AC | 18 ms | 676 KiB |
| in49.txt | AC | 19 ms | 648 KiB |
| in50.txt | AC | 18 ms | 720 KiB |
| in51.txt | AC | 18 ms | 720 KiB |
| in52.txt | AC | 19 ms | 720 KiB |
| in53.txt | AC | 18 ms | 688 KiB |
| in54.txt | AC | 18 ms | 592 KiB |
| in55.txt | AC | 18 ms | 720 KiB |
| in56.txt | AC | 18 ms | 720 KiB |
| in57.txt | AC | 18 ms | 648 KiB |
| in58.txt | AC | 19 ms | 720 KiB |
| in59.txt | AC | 3 ms | 724 KiB |
| in60.txt | AC | 4 ms | 704 KiB |
| in61.txt | AC | 4 ms | 720 KiB |
| in62.txt | AC | 7 ms | 716 KiB |
| in63.txt | AC | 11 ms | 720 KiB |
| in64.txt | AC | 16 ms | 644 KiB |
| sample_01.txt | AC | 3 ms | 720 KiB |