Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstdio>
- #include <iostream>
- #include <iomanip>
- #include <vector>
- #include <map>
- #include <set>
- #include <cmath>
- #include <cstdlib>
- #include <ctime>
- #include <cstring>
- #include <string>
- #include <sstream>
- #include <queue>
- #include <bitset>
- #include <fstream>
- #include <stack>
- #include <deque>
- #include <utility>
- #include <numeric>
- using namespace std;
- typedef long long ll;
- typedef pair <int, int> pii;
- const int N = 50;
- const int LIM = 5e5;
- string s[N];
- bool used[LIM];
- int main() {
- freopen("input.txt", "r", stdin);
- ios_base::sync_with_stdio(false);
- int n;
- cin >> n;
- cout << 2 << "\n";
- cout.flush();
- cin >> s[1];
- if (s[1] == "OK") return 0;
- for (int i = 2; i <= 41; i++) {
- cout << 2 << "\n";
- cout.flush();
- cin >> s[i];
- }
- for (int i = 2; i <= n; i++) {
- if (used[i]) continue;
- for (ll f = 1LL * i * i; f <= n; f += i) used[f] = true;
- }
- for (int t = n; t >= 3; t--) {
- if (used[t]) continue;
- int l = 1, r = t - 1;
- for (int i = 1; i <= 41; i++) {
- int m = (l + r) / 2;
- if (s[i] == ">") r = m; else l = m + 1;
- if (l == r) break;
- }
- if (l >= t) continue;
- int x0 = l, x = l, nom;
- for (int i = 1; i <= 41; i++) if (s[i] == "<") {
- nom = i + 1;
- break;
- }
- else x *= 2;
- l = 1, r = t - 1;
- for (int i = nom; i <= 41; i++) {
- int m = (l + r) / 2;
- if (s[i] == ">") r = m; else l = m + 1;
- if (l == r) break;
- }
- if (l >= t) continue;
- int p = 2 * x - l;
- if (p != t) continue;
- bool ok = true;
- for (int i = 1; i <= 41; i++) {
- x = x0 * 2;
- if (x >= p) x -= p;
- if ((x > x0 && s[i] == "<") || (x < x0 && s[i] == ">")) {
- ok = false;
- break;
- }
- x0 = x;
- }
- if (!ok) continue;
- cout << p << "\n";
- cout.flush();
- cin >> s[42];
- break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement