結果
| 問題 |
No.355 数当てゲーム(2)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-07-13 03:35:40 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,752 bytes |
| コンパイル時間 | 1,553 ms |
| コンパイル使用メモリ | 172,632 KB |
| 実行使用メモリ | 25,964 KB |
| 平均クエリ数 | 5050.00 |
| 最終ジャッジ日時 | 2024-07-16 10:34:55 |
| 合計ジャッジ時間 | 13,125 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 52 |
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:47:9: warning: 'x' may be used uninitialized [-Wmaybe-uninitialized]
47 | if(x==4)
| ^~
main.cpp:35:9: note: 'x' was declared here
35 | int x,y;
| ^
main.cpp:53:16: warning: 'y' may be used uninitialized [-Wmaybe-uninitialized]
53 | s1[i]=x+y;
| ~^~
main.cpp:35:11: note: 'y' was declared here
35 | int x,y;
| ^
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define each(itr,c) for(__typeof(c.begin()) itr=c.begin(); itr!=c.end(); ++itr)
#define all(x) (x).begin(),(x).end()
#define mp make_pair
#define pb push_back
#define fi first
#define se second
typedef vector<int> vi;
int x,y;
void query(const vi &v)
{
//クエリ生成
rep(i,v.size())
{
if(i) printf(" ");
printf("%d", v[i]);
}
printf("\n");
cout << flush;
//答え取得
cin >>x >>y;
}
int main()
{
bool end=false;
int x,y;
//まず012を固定,3~9を調べる
vi v1(4);
rep(i,3) v1[i]=i;
int s1[10]={0};
for(int i=3; i<=9; ++i)
{
v1[3]=i;
query(v1);
if(x==4)
{
end=true;
break;
}
s1[i]=x+y;
}
if(!end)
{
int large=0,small=4;
for(int i=3; i<=9; ++i)
{
large=max(large,s1[i]);
small=min(small,s1[i]);
}
//largeとsmallにグループ分け
vi L,S;
for(int i=3; i<=9; ++i)
{
if(s1[i]==large) L.pb(i);
if(s1[i]==small) S.pb(i);
}
vi v2(4);
//Sはハズレ数字の集合,最低でも3個はある
rep(i,3) v2[i]=S[i];
//その3つのハズレ数字を固定し,012の可能性を調べる
rep(i,3)
{
v2[3]=i;
query(v2);
//答えにiは含まれている
if(x+y==1) L.pb(i);
}
sort(all(L));
do{
query(L);
if(x==4) break;
}while(next_permutation(all(L)));
}
return 0;
}