結果
| 問題 |
No.594 壊れた宝物発見機
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-04-09 12:14:10 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 142 ms / 2,000 ms |
| コード長 | 3,314 bytes |
| コンパイル時間 | 3,075 ms |
| コンパイル使用メモリ | 376,004 KB |
| 最終ジャッジ日時 | 2025-02-12 04:12:43 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:162:15: warning: ‘res[2]’ may be used uninitialized [-Wmaybe-uninitialized]
162 | answer(res[0],res[1],res[2]);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
main.cpp:72:13: note: ‘res[2]’ was declared here
72 | int res[3];
| ^~~
main.cpp:162:15: warning: ‘res[1]’ may be used uninitialized [-Wmaybe-uninitialized]
162 | answer(res[0],res[1],res[2]);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
main.cpp:72:13: note: ‘res[1]’ was declared here
72 | int res[3];
| ^~~
main.cpp:162:15: warning: ‘res[0]’ may be used uninitialized [-Wmaybe-uninitialized]
162 | answer(res[0],res[1],res[2]);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
main.cpp:72:13: note: ‘res[0]’ was declared here
72 | int res[3];
| ^~~
ソースコード
#pragma GCC optimize("O3")
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,fma")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimization ("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
// 질문 쿼리
int ask (int x, int y, int z) {
int d;
cout << "?" << " " << x << " " << y << " " << z << endl;
cin >> d;
return d;
}
// 답변 쿼리
void answer(int x, int y, int z) {
cout << "!" << " " << x << " " << y << " " << z << endl;
}
int main(void)
{
//cin.tie(0);
//ios::sync_with_stdio(false);
int res[3];
int x = 150;
int y = 150;
int z = 150;
int lo = -150;
int hi = 150;
while(hi-lo >= 3)
{
int p = (lo*2 + hi)/3, q = (lo + hi*2)/3;
if(ask(x,y,p) <= ask(x,y,q))
{
hi = q;
}
else
{
lo = p;
}
}
int val = 1e9;
for(int i=lo;i<=hi;i++)
{
int xx = ask(x,y,i);
if(xx < val)
{
val = xx;
res[2] = i;
}
}
lo = -150;
hi = 150;
while(hi-lo >= 3)
{
int p = (lo*2 + hi)/3, q = (lo + hi*2)/3;
if(ask(x,p,z) <= ask(x,q,z))
{
hi = q;
}
else
{
lo = p;
}
}
val = 1e9;
for(int i=lo;i<=hi;i++)
{
int xx = ask(x,i,z);
if(xx < val)
{
val = xx;
res[1] = i;
}
}
lo = -150;
hi = 150;
while(hi-lo >= 3)
{
int p = (lo*2 + hi)/3, q = (lo + hi*2)/3;
if(ask(p,y,z) <= ask(q,y,z))
{
hi = q;
}
else
{
lo = p;
}
}
val = 1e9;
for(int i=lo;i<=hi;i++)
{
int xx = ask(i,y,z);
if(xx < val)
{
val = xx;
res[0] = i;
}
}
answer(res[0],res[1],res[2]);
return 0;
}