提出 #60069291
ソースコード 拡げる
#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/hash_policy.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
#define ps putchar(' ')
#define pe putchar('\n')
#define int long long
#define eb emplace_back
#define pi pair<int, int>
#define mk make_pair
#define fi first
#define se second
#define Ad tr[p].ad
// #define Ad t[p].ad
#define ls p << 1
#define rs p << 1 | 1
// #define ls tr[p].son[0]
// #define rs tr[p].son[1]
// #define ls t[p].son[0]
// #define rs t[p].son[1]
#define len (r - l + 1)
#define mid ((l + r) >> 1)
using namespace std;
// using namespace __gnu_pbds
inline int read()
{
int f = 0, ans = 0;
char c = getchar();
while (!isdigit(c))
f |= c == '-', c = getchar();
while (isdigit(c))
ans = (ans << 3) + (ans << 1) + c - 48, c = getchar();
return f ? -ans : ans;
}
void write(int x)
{
if (x < 0)
putchar('-'), x = -x;
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
const int N = 2e5 + 5, M = N << 2, inf = 1e18, mod = 998244353;
int n, m, cnt, id[N];
int s1[N], s2[N];
string s;
signed main()
{
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
n = read(), m = read();
cin >> s, s = ' ' + s;
for (int i = 1; i <= n; ++i)
if (s[i] == '/')
id[++cnt] = i;
for (int i = 1; i <= n; ++i)
s1[i] = s1[i - 1] + (s[i] == '1');
for (int i = n; i; --i)
s2[i] = s2[i + 1] + (s[i] == '2');
while (m--)
{
int s = read(), t = read();
auto get = [&](int i)
{ return min(s1[i] - s1[s - 1], s2[i] - s2[t + 1]); };
int l = lower_bound(id + 1, id + cnt + 1, s) - id, r = upper_bound(id + 1, id + cnt + 1, t) - id - 1;
if (l > r)
{
puts("0");
continue;
}
while (len > 10)
{
int Mid = l + r >> 1;
int MMid = Mid + r >> 1;
get(id[Mid]) < get(id[MMid])
? (l = mid)
: (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
// get(id[mid]) <= get(id[mid + 1])
// ? (l = mid)
// : (r = mid);
}
int ans = 0;
for (int i = max(l - 8000, 1ll); i <= min(r + 8000, cnt); ++i)
ans = max(ans, get(id[i]));
write(ans * 2 + 1), pe;
}
return 0;
}
提出情報
コンパイルエラー
Main.cpp: In function ‘int main()’:
Main.cpp:73:25: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
73 | int Mid = l + r >> 1;
| ~~^~~
Main.cpp:74:28: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
74 | int MMid = Mid + r >> 1;
| ~~~~^~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
500 / 500 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt |
| All |
00_sample_00.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 02_corner_00.txt, 02_corner_01.txt, 02_corner_02.txt, 02_corner_03.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3484 KiB |
| 01_random_00.txt |
AC |
1671 ms |
5496 KiB |
| 01_random_01.txt |
AC |
1245 ms |
4508 KiB |
| 01_random_02.txt |
AC |
1522 ms |
5504 KiB |
| 01_random_03.txt |
AC |
1384 ms |
5304 KiB |
| 01_random_04.txt |
AC |
1673 ms |
5620 KiB |
| 01_random_05.txt |
AC |
1417 ms |
4924 KiB |
| 01_random_06.txt |
AC |
1755 ms |
5388 KiB |
| 01_random_07.txt |
AC |
808 ms |
4744 KiB |
| 01_random_08.txt |
AC |
1840 ms |
5328 KiB |
| 01_random_09.txt |
AC |
1387 ms |
4920 KiB |
| 01_random_10.txt |
AC |
923 ms |
5660 KiB |
| 01_random_11.txt |
AC |
1110 ms |
5312 KiB |
| 01_random_12.txt |
AC |
392 ms |
5480 KiB |
| 01_random_13.txt |
AC |
651 ms |
4948 KiB |
| 01_random_14.txt |
AC |
1336 ms |
5616 KiB |
| 01_random_15.txt |
AC |
1073 ms |
4832 KiB |
| 01_random_16.txt |
AC |
1453 ms |
5660 KiB |
| 01_random_17.txt |
AC |
1175 ms |
4740 KiB |
| 01_random_18.txt |
AC |
1471 ms |
5408 KiB |
| 01_random_19.txt |
AC |
11 ms |
5020 KiB |
| 02_corner_00.txt |
AC |
9 ms |
5160 KiB |
| 02_corner_01.txt |
AC |
3 ms |
3372 KiB |
| 02_corner_02.txt |
AC |
4 ms |
3496 KiB |
| 02_corner_03.txt |
AC |
4 ms |
3508 KiB |