結果
問題 | No.355 数当てゲーム(2) |
ユーザー |
![]() |
提出日時 | 2016-04-02 15:39:20 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 24 ms / 2,000 ms |
コード長 | 2,141 bytes |
コンパイル時間 | 1,445 ms |
コンパイル使用メモリ | 133,792 KB |
実行使用メモリ | 25,580 KB |
平均クエリ数 | 24.54 |
最終ジャッジ日時 | 2024-07-16 23:27:27 |
合計ジャッジ時間 | 5,131 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 52 |
ソースコード
#define _USE_MATH_DEFINES #include<iostream> #include<vector> #include<cstdio> #include<string> #include<algorithm> #include<iomanip> #include<cmath> #include<numeric> #include<map> #include<stack> #include<regex> #include<set> #include<initializer_list> #include<tuple> #include<queue> #include<functional> #include<random> 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<int> vi; typedef vector<double> vd; int main() { random_device seed_gen; mt19937 engine(seed_gen()); uniform_int_distribution<int> disti(0, 3); uniform_int_distribution<int> distv(0, 9); set<int> s = { 0,1,2,3 }; vector<bool> unUsing(10, false); int evaluate = 0; int a, b; a = b = 0; while (evaluate != 4 && a != 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); int newVal = distv(engine); if (unUsing[newVal]) continue; next_s.insert(newVal); if (s == next_s) continue; 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 > a+b) { unUsing[newVal] = true; } if (evaluate < a+b) { evaluate = a+b; s = next_s; } } vector<int> 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]; } cout << endl; cin >> evaluate >> b; next_permutation(v.begin(), v.end()); } return 0; }