제출 #643849

#제출 시각아이디문제언어결과실행 시간메모리
643849KindaNamelessAliens (IOI07_aliens)C++14
0 / 100
2 ms336 KiB
#include<algorithm> #include<iostream> #include<iomanip> #include<cstring> #include<numeric> #include<string> #include<vector> #include<bitset> #include<queue> #include<stack> #include<deque> #include<cmath> #include<map> #include<set> using namespace std; #define ll long long #define ld long double #define int long long int N; bool ask(int x, int y){ if(x <= 0 || y <= 0 || x > N || y > N)return 0; cout << "examine " << x << " " << y << "\n"; string s; cin >> s; return s[0] == 't'; } int check(int x, int y, int dx, int dy){ int p = 1; while(ask(x + p*dx, y + p*dy)){ p *= 2; } int l = p/2, r = p; while(r - l > 1){ int m = (l + r) / 2; if(ask(x + m*dx, y + m*dy)){ l = m; } else r = m; } return l; } signed main(){ //ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int x, y; cin >> N >> x >> y; int a, b, c, d; a = check(x, y, 0, -1); b = check(x, y, 0, 1); c = check(x, y, -1, 0); d = check(x, y, 1, 0); int M = a + b + 1; int xc = x + (M/2) - a, yc = y + (M/2) - c; cout << " " << xc << " " << yc << "\n"; a = check(xc, yc, M, M); b = check(xc, yc, M, -M); c = check(xc, yc, -M, -M); d = check(xc, yc, -M, M); if(a == 4 && b == 0 && c == 0 && d == 0){xc += 2*M; yc += 2*M;} if(a == 2 && b == 0 && c == 0 && d == 2){xc += 0*M; yc += 2*M;} if(a == 0 && b == 0 && c == 0 && d == 5){xc -= 2*M; yc += 2*M;} if(a == 3 && b == 1 && c == 1 && d == 1){xc += 1*M; yc += 1*M;} if(a == 1 && b == 1 && c == 1 && d == 3){xc -= 1*M; yc += 1*M;} if(a == 2 && b == 2 && c == 0 && d == 0){xc += 2*M; yc += 0*M;} if(a == 2 && b == 2 && c == 2 && d == 2){xc += 0*M; yc += 0*M;} if(a == 0 && b == 0 && c == 2 && d == 2){xc -= 2*M; yc += 0*M;} if(a == 1 && b == 3 && c == 1 && d == 1){xc += 1*M; yc -= 1*M;} if(a == 1 && b == 1 && c == 3 && d == 1){xc -= 1*M; yc -= 1*M;} if(a == 0 && b == 4 && c == 0 && d == 0){xc += 2*M; yc -= 2*M;} if(a == 0 && b == 2 && c == 2 && d == 0){xc += 0*M; yc -= 2*M;} if(a == 0 && b == 0 && c == 4 && d == 0){xc -= 2*M; yc -= 2*M;} cout << "solution " << xc << " " << yc << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...