답안 #94013

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
94013 2019-01-14T16:35:39 Z tincamatei Aliens (IOI07_aliens) C++14
0 / 100
3 ms 376 KB
#include <bits/stdc++.h>

using namespace std;

bool examine(int l, int c, int n) {
  string str;
  if(l < 1 || l > n || c < 1 || c > n)
    return false;
  cout << "examine " << l << ' ' << c << endl;
  cin >> str;
  return str == "true";
}

pair<int, int> getNextWhite(int l, int c, int dl, int dc, int n) {
  int lg = 0;
  while(examine(l + dl * (1 << lg), c + dc * (1 << lg), n))
    ++lg;

  int l2 = l + dl * (1 << lg), c2 = c + dc * (1 << lg);
  while(abs(c2 - c) > 1 || abs(l2 - l) > 1) {
    int midl, midc;
    midl = (l + l2) / 2;
    midc = (c + c2) / 2;

    if(examine(midl, midc, n)) {
      l = midl;
      c = midc;
    } else {
      l2 = midl;
      c2 = midc;
    }
  }

  return make_pair(l2, c2);
}

int main() {
  int n, x, y, m;
  int maxx, maxy, minx, miny;
  pair<int, int> lW, rW, dW;

  cin >> n >> x >> y;
  lW = getNextWhite(x, y, 0, -1, n);
  rW = getNextWhite(x, y, 0,  1, n);
  dW = getNextWhite(x, y, 1,  0, n);

  m = rW.second - lW.second - 1;

  x = (lW.second + rW.second) / 2;
  y = (dW.first - m / 2 - 1);

  maxx = maxy = 1 << 30;
  minx = miny = -(1 << 30);

  for(int i = -4; i <= 4; ++i)
    for(int j = -4; j <= 4; ++j)
      if(examine(x + i * m, y + j * m, n)) {
        maxx = max(maxx, x + i * m);
        maxy = max(maxy, y + j * m);
        minx = min(minx, x + i * m);
        miny = min(miny, y + j * m);
      }

  cout << "solution " << (minx + maxx) / 2 << ' ' << (miny + maxy) / 2 << endl;
  return 0;
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB Incorrect
2 Halted 0 ms 0 KB -