Submission #288228

#TimeUsernameProblemLanguageResultExecution timeMemory
288228KastandaAliens (IOI07_aliens)C++11
100 / 100
2 ms404 KiB
// M #include<bits/stdc++.h> using namespace std; typedef long long ll; ll n, m, nwx, nwy; int main() { scanf("%lld%lld%lld", &n, &nwx, &nwy); map < pair < ll , ll > , bool > MP; auto Query = [&](ll a, ll b){ if (a < 1 || a > n || b < 1 || b > n) return false; if (MP.count({a, b})) return MP[make_pair(a, b)]; printf("examine %lld %lld\n", a, b); fflush(stdout); char ss[7]; scanf("%s", ss); MP[make_pair(a, b)] = ss[0] == 't'; return (bool)(ss[0] == 't'); }; { ll lg = 0; while (Query(nwx - (1LL << lg), nwy)) lg ++; ll left_gap = 0; for (ll i = lg - 1; i >= 0; i --) if (Query(nwx - left_gap - (1LL << i), nwy)) left_gap |= 1LL << i; lg = 0; while (Query(nwx + (1LL << lg), nwy)) lg ++; ll right_gap = 0; for (ll i = lg - 1; i >= 0; i --) if (Query(nwx + right_gap + (1LL << i), nwy)) right_gap |= 1LL << i; m = right_gap + left_gap + 1; assert(m >= 3 && m & 1LL); nwx -= left_gap; lg = 0; while (Query(nwx, nwy - (1LL << lg))) lg ++; ll down_gap = 0; for (ll i = lg - 1; i >= 0; i --) if (Query(nwx, nwy - down_gap - (1LL << i))) down_gap |= 1LL << i; nwy -= down_gap; while (Query(nwx - m * 2LL, nwy)) nwx -= m * 2LL; if (Query(nwx - m, nwy - m)) nwx -= m, nwy -= m; while (Query(nwx, nwy - m * 2LL)) nwy -= m * 2LL; nwx += m * 2 + m / 2; nwy += m * 2 + m / 2; printf("solution %lld %lld\n", nwx, nwy); fflush(stdout); } return 0; }

Compilation message (stderr)

aliens.cpp: In function 'int main()':
aliens.cpp:8:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    8 |         scanf("%lld%lld%lld", &n, &nwx, &nwy);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aliens.cpp: In lambda function:
aliens.cpp:19:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   19 |                 scanf("%s", ss);
      |                 ~~~~~^~~~~~~~~~
#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...