結果
| 問題 |
No.513 宝探し2
|
| コンテスト | |
| ユーザー |
aaa
|
| 提出日時 | 2018-09-15 15:21:02 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 3,866 bytes |
| コンパイル時間 | 857 ms |
| コンパイル使用メモリ | 95,448 KB |
| 実行使用メモリ | 39,888 KB |
| 最終ジャッジ日時 | 2024-07-16 16:08:07 |
| 合計ジャッジ時間 | 7,280 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | TLE * 1 -- * 11 |
ソースコード
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <map>
#include <iomanip>
#include <math.h>
#include <stack>
#include <queue>
#include <bitset>
#include <cstdlib>
#include <tuple>
#include <cctype>
#include <ctype.h>
#include <set>
using namespace std;
int main() {
int i, j, k;
int x = 50000, y = 50000;
int d;
cout << x << " " << y << endl;
cin >> d;
if (d == 0) return 0;
int add = 10000;
int xx = x + add, yy = y;
bool flag = false; //falseで多くなってる trueで少なくなってる
bool flag2 = true; //falseでマイナスしている trueでプラスしている
while (true)
{
int cnt = 0;
bool first = true;
cout << xx << " " << yy << endl;
int dd;
cin >> dd;
if (dd == 0)return 0;
if (dd >= d) {
if (flag2 == false) {
if (xx + add <= 100000) {
add /= 2;
xx += add;
}
else {
while (true) {
add /= 2;
if (xx + add <= 100000) {
xx += add;
break;
}
}
}
flag2 = true;
}
else if (flag2 == true) {
//xx -= add;
if (xx - add >= 0) {
add /= 2;
xx -= add;
}
else {
while (true) {
add /= 2;
if (xx - add >= 0) {
xx -= add;
break;
}
}
}
flag2 = false;
}
flag = false;
if (first != true && add >= 2)add /= 2;
first = false;
}
else if(dd < d){
if (flag2 == false) {
// xx -= add;
if (xx - add >= 0) {
xx -= add;
}
else {
while (true) {
add /= 2;
if (xx - add >= 0) {
xx -= add;
break;
}
}
}
flag2 = false;
}
else if (flag2 == true) {
//xx += add;
if (xx + add <= 100000) {
xx += add;
}
else {
while (true) {
add /= 2;
if (xx + add <= 100000) {
xx += add;
break;
}
}
}
flag2 = true;
}
flag = true;
}
//else if ( ( dd == d + 1 || dd == d - 1 || dd == d ) && add == 1) {
else if(cnt>=7){
break;
}
d = dd;
if (add == 1)cnt++;
}
//------------------------------------------
add = 10000;
yy += add;
//cout << xx << " " << yy << endl;
flag2 = true;
while (true)
{
int cnt = 0;
bool first = true;
cout << xx << " " << yy << endl;
int dd;
cin >> dd;
if (dd == 0) return 0;
if (dd >= d) {
if (flag2 == false) {
if (yy + add <= 100000) {
add /= 2;
yy += add;
}
else {
while (true) {
add /= 2;
if (yy + add <= 100000) {
yy += add;
break;
}
}
}
flag2 = true;
}
else if (flag2 == true) {
//yy -= add;
if (yy - add >= 0) {
add /= 2;
yy -= add;
}
else {
while (true) {
add /= 2;
if (yy - add >= 0) {
yy -= add;
break;
}
}
}
flag2 = false;
}
flag = false;
if (first != true && add >= 2) add /= 2;
first = false;
}
else if (dd < d) {
if (flag2 == false) {
//yy -= add;
if (yy - add >= 0) {
yy -= add;
}
else {
while (true) {
add /= 2;
if (yy - add >= 0) {
yy -= add;
break;
}
}
}
flag2 = false;
}
else if (flag2 == true) {
//yy += add;
if (yy + add <= 100000) {
yy += add;
}
else {
while (true) {
add /= 2;
if (yy + add <= 100000) {
yy += add;
break;
}
}
}
flag2 = true;
}
flag = true;
}
//else if (dd == d) {
else if(cnt >= 7){
break;
}
d = dd;
if (add == 1)cnt++;
}
return 0;
getchar();
getchar();
return 0;
}
aaa