結果

問題 No.355 数当てゲーム(2)
ユーザー はむこ
提出日時 2016-09-02 08:40:57
言語 C++11
(gcc 13.3.0)
結果
AC  
実行時間 30 ms / 2,000 ms
コード長 1,200 bytes
コンパイル時間 1,662 ms
コンパイル使用メモリ 169,504 KB
実行使用メモリ 25,464 KB
平均クエリ数 25.40
最終ジャッジ日時 2024-07-17 00:22:13
合計ジャッジ時間 5,880 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 52
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
void output(vector<int> &v) { for (int i = 0; i < v.size(); i++) printf("%s%d", i ? " " : "", v[i]); printf("\n"); }
pair<int, int> query(vector<int> a) {
for (int i = 0; i < 4; i++) cout << (i ? " " : "") << a[i];
cout << endl;
int x, y;
cin >> x >> y;
if (x == 4) exit(0);
return make_pair(x, y);
}
int sum(pair<int, int> p) {
return p.first + p.second;
}
int main() {
int d1 = sum(query({ 0, 1, 2, 3 }));
int d2 = sum(query({ 6, 7, 8, 9 }));
vector<int> e1(10, -10), e2(10, -10);
e1[3] = 0;
for (int i = 4; i <= 9; i++) {
e1[i] = sum(query({ 0, 1, 2, i })) - d1;
}
e2[6] = 0;
for (int i = 0; i <= 5; i++) {
e2[i] = sum(query({ i, 7, 8, 9 })) - d2;
}
int mx1 = *max_element(e1.begin(), e1.end());
int mx2 = *max_element(e2.begin(), e2.end());
vector<int> cand;
for (int i = 4; i <= 9; i++) {
if (e1[i] == mx1) cand.push_back(i);
}
for (int i = 0; i <= 5; i++) {
if (e2[i] == mx2) cand.push_back(i);
}
sort(cand.begin(), cand.end());
cand.erase(unique(cand.begin(), cand.end()), cand.end());
do {
if (query(cand).first == 4) {
return 0;
}
} while (next_permutation(cand.begin(), cand.end()));
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0