#include <bits/stdc++.h>
using namespace std;
#ifdef MIKU
string dbmc = "\033[1;38;2;57;197;187m", dbrs = "\033[0m";
#define debug(x...) cout << dbmc << "[" << #x << "]: ", dout(x)
void dout() { cout << dbrs << endl; }
template <typename T, typename ...U>
void dout(T t, U ...u) { cout << t << (sizeof...(u) ? ", " : ""); dout(u...); }
#else
#define debug(...) 39
#endif
#define fs first
#define sc second
#define mp make_pair
#define FOR(i, j, k) for (int i = j, Z = k; i < Z; i++)
using ll = long long;
typedef pair<int, int> pii;
const int MXN = 200005;
int n;
int N;
map<pii, int> M;
int fquery(int l, int r) {
cout << "? " << l << ' ' << r << endl;
int x;
cin >> x;
return x;
}
int query(int l, int r) {
// [l, r]
auto fquery = [&](int l, int r) -> int {
if (l == r) return 1;
cout << "? " << l << ' ' << r << endl;
int x;
cin >> x;
return x;
};
if (l <= 0 || r > N) return 0;
if (l & 1) l++;
if (r & 1) r--;
l /= 2;
r /= 2;
auto it = M.find(mp(l, r));
return (it == M.end() ? (M[mp(l, r)] = fquery(l, r)) : it -> sc);
}
namespace MANACHER {
int m[MXN], l;
void DO() {
m[1] = 0;
m[2] = 1;
l = 2;
FOR(i, 3, N + 1) {
if (i >= l + m[l] + 1) {
while (true) {
if (query(i - m[i] - 1, i + m[i] + 1) == 0) break;
m[i]++;
}
l = i;
} else {
int i_ = 2 * l - i;
if (i_ - m[i_] == l - m[l]) {
m[i] = m[i_];
while (true) {
if (query(i - m[i] - 1, i + m[i] + 1) == 0) break;
m[i]++;
}
l = i;
} else if (i_ - m[i_] < l - m[l]) {
m[i] = i_ + m[l] - l;
} else {
m[i] = m[i_];
}
}
}
}
}
void miku() {
cin >> n;
N = 2 * n + 1;
MANACHER::DO();
// int ans = 0;
// FOR(1, N + 1) {
// if (i & 1)
// }
cout << "! " << *max_element(MANACHER::m + 1, MANACHER::m + N + 1) << endl;
}
int32_t main() {
cin.tie(0) -> sync_with_stdio(false);
cin.exceptions(cin.failbit);
miku();
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
63 ms |
2072 KB |
Output is correct |
2 |
Correct |
65 ms |
2532 KB |
Output is correct |
3 |
Correct |
87 ms |
2840 KB |
Output is correct |
4 |
Correct |
57 ms |
1560 KB |
Output is correct |
5 |
Correct |
66 ms |
2024 KB |
Output is correct |
6 |
Correct |
63 ms |
2612 KB |
Output is correct |
7 |
Correct |
82 ms |
2468 KB |
Output is correct |
8 |
Correct |
70 ms |
1688 KB |
Output is correct |
9 |
Correct |
73 ms |
1980 KB |
Output is correct |
10 |
Correct |
68 ms |
2308 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
63 ms |
2072 KB |
Output is correct |
2 |
Correct |
65 ms |
2532 KB |
Output is correct |
3 |
Correct |
87 ms |
2840 KB |
Output is correct |
4 |
Correct |
57 ms |
1560 KB |
Output is correct |
5 |
Correct |
66 ms |
2024 KB |
Output is correct |
6 |
Correct |
63 ms |
2612 KB |
Output is correct |
7 |
Correct |
82 ms |
2468 KB |
Output is correct |
8 |
Correct |
70 ms |
1688 KB |
Output is correct |
9 |
Correct |
73 ms |
1980 KB |
Output is correct |
10 |
Correct |
68 ms |
2308 KB |
Output is correct |
11 |
Correct |
525 ms |
7728 KB |
Output is correct |
12 |
Correct |
726 ms |
13804 KB |
Output is correct |
13 |
Correct |
721 ms |
14012 KB |
Output is correct |
14 |
Correct |
670 ms |
9160 KB |
Output is correct |
15 |
Correct |
716 ms |
13140 KB |
Output is correct |
16 |
Correct |
763 ms |
10016 KB |
Output is correct |
17 |
Correct |
750 ms |
9732 KB |
Output is correct |
18 |
Correct |
548 ms |
8520 KB |
Output is correct |
19 |
Correct |
727 ms |
9796 KB |
Output is correct |
20 |
Correct |
675 ms |
11520 KB |
Output is correct |
21 |
Correct |
593 ms |
10980 KB |
Output is correct |
22 |
Correct |
659 ms |
12752 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
837 ms |
11272 KB |
Output is correct |
2 |
Correct |
535 ms |
8300 KB |
Output is correct |
3 |
Correct |
780 ms |
11320 KB |
Output is correct |
4 |
Correct |
1189 ms |
14576 KB |
Output is correct |
5 |
Correct |
1173 ms |
14260 KB |
Output is correct |
6 |
Correct |
793 ms |
10736 KB |
Output is correct |
7 |
Correct |
1158 ms |
13960 KB |
Output is correct |
8 |
Correct |
797 ms |
11208 KB |
Output is correct |
9 |
Correct |
750 ms |
11000 KB |
Output is correct |
10 |
Correct |
786 ms |
11484 KB |
Output is correct |
11 |
Correct |
1174 ms |
14324 KB |
Output is correct |
12 |
Correct |
1174 ms |
14668 KB |
Output is correct |
13 |
Correct |
848 ms |
11204 KB |
Output is correct |
14 |
Correct |
801 ms |
11368 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
63 ms |
2072 KB |
Output is correct |
2 |
Correct |
65 ms |
2532 KB |
Output is correct |
3 |
Correct |
87 ms |
2840 KB |
Output is correct |
4 |
Correct |
57 ms |
1560 KB |
Output is correct |
5 |
Correct |
66 ms |
2024 KB |
Output is correct |
6 |
Correct |
63 ms |
2612 KB |
Output is correct |
7 |
Correct |
82 ms |
2468 KB |
Output is correct |
8 |
Correct |
70 ms |
1688 KB |
Output is correct |
9 |
Correct |
73 ms |
1980 KB |
Output is correct |
10 |
Correct |
68 ms |
2308 KB |
Output is correct |
11 |
Correct |
525 ms |
7728 KB |
Output is correct |
12 |
Correct |
726 ms |
13804 KB |
Output is correct |
13 |
Correct |
721 ms |
14012 KB |
Output is correct |
14 |
Correct |
670 ms |
9160 KB |
Output is correct |
15 |
Correct |
716 ms |
13140 KB |
Output is correct |
16 |
Correct |
763 ms |
10016 KB |
Output is correct |
17 |
Correct |
750 ms |
9732 KB |
Output is correct |
18 |
Correct |
548 ms |
8520 KB |
Output is correct |
19 |
Correct |
727 ms |
9796 KB |
Output is correct |
20 |
Correct |
675 ms |
11520 KB |
Output is correct |
21 |
Correct |
593 ms |
10980 KB |
Output is correct |
22 |
Correct |
659 ms |
12752 KB |
Output is correct |
23 |
Correct |
837 ms |
11272 KB |
Output is correct |
24 |
Correct |
535 ms |
8300 KB |
Output is correct |
25 |
Correct |
780 ms |
11320 KB |
Output is correct |
26 |
Correct |
1189 ms |
14576 KB |
Output is correct |
27 |
Correct |
1173 ms |
14260 KB |
Output is correct |
28 |
Correct |
793 ms |
10736 KB |
Output is correct |
29 |
Correct |
1158 ms |
13960 KB |
Output is correct |
30 |
Correct |
797 ms |
11208 KB |
Output is correct |
31 |
Correct |
750 ms |
11000 KB |
Output is correct |
32 |
Correct |
786 ms |
11484 KB |
Output is correct |
33 |
Correct |
1174 ms |
14324 KB |
Output is correct |
34 |
Correct |
1174 ms |
14668 KB |
Output is correct |
35 |
Correct |
848 ms |
11204 KB |
Output is correct |
36 |
Correct |
801 ms |
11368 KB |
Output is correct |
37 |
Correct |
826 ms |
10908 KB |
Output is correct |
38 |
Correct |
1123 ms |
20344 KB |
Output is correct |
39 |
Correct |
1140 ms |
20556 KB |
Output is correct |
40 |
Correct |
947 ms |
12188 KB |
Output is correct |
41 |
Correct |
1061 ms |
19032 KB |
Output is correct |
42 |
Correct |
1132 ms |
14384 KB |
Output is correct |
43 |
Correct |
1211 ms |
13668 KB |
Output is correct |
44 |
Correct |
910 ms |
13872 KB |
Output is correct |
45 |
Correct |
1207 ms |
14184 KB |
Output is correct |
46 |
Correct |
1012 ms |
17708 KB |
Output is correct |
47 |
Correct |
1076 ms |
18240 KB |
Output is correct |
48 |
Correct |
1078 ms |
19992 KB |
Output is correct |
49 |
Correct |
1158 ms |
14452 KB |
Output is correct |
50 |
Correct |
861 ms |
11484 KB |
Output is correct |
51 |
Correct |
1124 ms |
20008 KB |
Output is correct |
52 |
Correct |
1182 ms |
19576 KB |
Output is correct |