제출 #1368134

#제출 시각아이디문제언어결과실행 시간메모리
1368134SofiatpcFind the Box (EGOI23_findthebox)C++20
100 / 100
0 ms412 KiB
#include <bits/stdc++.h>

using namespace std;

int h,w; 

void askline(int r){
    cout<<"? ";
    for(int i = 1; i < r; i++)cout<<"v";
    for(int j = 1; j < w; j++)cout<<">";
    cout<<endl;

    int i,j; cin>>i>>j; i++; j++;
    if(i != r)cout<<"! "<<i+1 -1<<" 0"<<endl;
    else cout<<"! "<<i -1<<" "<<j+1 -1<<endl;
}   

void askcolumn(int c){
    cout<<"? ";
    for(int j = 1; j < c; j++)cout<<">";
    for(int i = 1; i < h; i++)cout<<"v";
    cout<<endl;

    int i,j; cin>>i>>j; i++; j++;
    cout<<"! "<<i+1 -1<<" "<<j -1<<endl;
}

void solve(){
    int mid = h/2;

    cout<<"? ";
    for(int i = 1; i < mid+1; i++)cout<<"v";
    for(int j = 1; j <= w; j++){
        for(int i = mid+1; i < h; i++)cout<<"v";
        for(int i = h; i > mid+1; i--)cout<<"^";
        if(j != w)cout<<">";
    }cout<<endl;

    int r,c; cin>>r>>c; r++; c++; 
    if(r == mid+1 && c != w){ cout<<"! "<<mid+1 -1<<" "<<c+1 -1<<endl; return; }
    if(h%2 == 0){
        if(r == 1){ askcolumn(1); return; }
        if(r != mid+1) { askline(h-(mid-r)); return; }
    }else{
        if(r != mid+1){ askline(h-(mid-r)); return; }
    }
    
    cout<<"? ";
    for(int i = 1; i < mid+1; i++)cout<<"v";
    cout<<">";
    for(int j = 2; j <= w; j++){
        for(int i = mid; i > 1; i--)cout<<"^";
        if(j != w) for(int i = 1; i < mid; i++)cout<<"v";
        if(j != w)cout<<">";
    }
    cout<<"^";
    for(int j = w; j > 1; j--)cout<<"<";
    cout<<endl;

    cin>>r>>c; r++; c++;
    if(c == 1)cout<<"! "<<r-1 -1<<" "<<w -1<<endl;
    else cout<<"! "<<r -1<<" "<<c-1 -1<<endl;
}

int main(){
    cin>>h>>w;

    if(h == 1) askline(1); 
    else if(w == 1) askcolumn(1); 
    else solve();
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…