#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for (int i=(a);i<(b);i++) #define RFOR(i,a,b) for (int i=(b)-1;i>=(a);i--) #define REP(i,n) for (int i=0;i<(n);i++) #define RREP(i,n) for (int i=(n)-1;i>=0;i--) #define all(a) (a).begin(),(a).end() const int INFTY = 100000000; typedef long long ll; typedef vector vi; typedef vector vd; int main() { random_device seed_gen; mt19937 engine(seed_gen()); uniform_int_distribution disti(0, 3); uniform_int_distribution distv(0, 9); set s = { 0,1,2,3 }; int evaluate = 0; int a, b; while (evaluate != 4) { auto next_s = s; auto it = next_s.begin(); auto pos = disti(engine); for (int i = 0; i < pos; i++) it++; next_s.erase(it); next_s.insert(distv(engine)); if (next_s.size() == 3) continue; bool init = true; for (auto& i : next_s) { if (!init) cout << " "; init = false; cout << i; } cout << endl; cin >> a >> b; if (evaluate < b) { evaluate = b; s = next_s; } } vector v; for (auto& i : s) { v.push_back(i); } sort(v.begin(), v.end()); evaluate = a; while (evaluate != 4) { for (int i = 0; i < v.size(); i++) { if (i != 0) cout << " "; cout << v[i]; } cin >> evaluate >> b; next_permutation(v.begin(), v.end()); } return 0; }