답안 #678881

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
678881 2023-01-06T20:24:25 Z Hacv16 Aliens (IOI07_aliens) C++17
컴파일 오류
0 ms 0 KB
#include<bits/stdc++.h>
using namespace std;

const int MAX = 1e6 + 15;

int n, x, y, m, numblock;

bool query(int x, int y){
    cout << "examine " << x << ' ' << y << '\n'; cout.flush();
    string ans; cin >> ans; return (ans == "true");
}

bool check(int x){ return x > 0 && x < n ;}

int main(){
    cin >> n >> x >> y;

    int up = y, down = y;

    while(check(up + 1) && query(x, up + 1)) up++;
    while(check(down - 1) && query(x, down - 1)) down--;

    m = up - down + 1;
    while(x - 1 > 0 && query(x - 1, up)) x--;

    int l = 0, r = 3 * n / m, curx = x, cury = up, jump = 0;

    //Pula diagonal
    while(l <= r){
        int mid = (l + r) >> 1;
        int nx = curx + m * mid, ny = cury + m * mid;
        if(!check(nx) || !check(ny)){ r = mid - 1; continue; }
        if(query(nx, ny)) l = mid + 1, jump = mid;
        else r = mid - 1;
    }   

    curx += jump * m;
    cury += jump * m;

    //cerr << curx << ' ' << cury << '\n';

    l = 0, r = ((n + m - 1)/ m), jump = 0;

    //Pula cima
    while(l <= r){
        int mid = (l + r) >> 1;
        int ny = cury + m * (2 * mid);
        if(!check(ny)) { r = mid - 1; continue; }
        if(query(curx, ny)) l = mid + 1, jump = 2 * mid;
        else r = mid - 1;
    }

    cury += jump * m;

    //Pula esquerda
    l = 0, r = ((n + m - 1)/ m), jump = 0;

    while(l <= r){
        int mid = (l + r) >> 1;
        int nx = curx - m * (2 * mid);
        if(!check(nx)){ r = mid - 1; continue; }
        if(query(nx, cury)) l = mid + 1, jump = 2 * mid;
        else r = mid - 1;
    }

    curx -= jump * m;
    
    //move to center of current block
    curx += (m - 1) / 2;
    cury -= (m - 1) / 2;
    
    //move to center block
    l = 0, r = ((n + m - 1) / m), jump = 0;

    while(l <= r){
        int mid = (l + r) >> 1;
        int nx = curx + m * (2 * mid);
        if(!check(nx)){ r = mid - 1; continue; }
        if(query(nx, cury)) l = mid + 1, jump = 2 * mid;
        else r = mid - 1;
    }

    numblock = jump + 1;

    curx += ((numblock - 1) / 2) * m;
    cury -= ((numblock - 1) / 2) * m;
    
    cout << "solution " curx << ' ' << cury << '\n';
    cout.flush();
    
    return 0;
}

Compilation message

aliens.cpp: In function 'int main()':
aliens.cpp:88:24: error: expected ';' before 'curx'
   88 |     cout << "solution " curx << ' ' << cury << '\n';
      |                        ^~~~~
      |                        ;