Submission #75815969
Source Code Expand
#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
#define rep(i, s, e) for (ll i = (s); i <= (e); i++)
#define all(v) v.begin(), v.end()
#define pb push_back
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using P = array<ll, 2>;
ll n, q, l, r;
string st;
struct T {
ll cst, len, ld, rd;
char lc, rc;
} seg[1212121];
T mg(T l, T r) {
if (l.len == 0)
return r;
if (r.len == 0)
return l;
T rs;
bool h = 0;
rs.cst = l.cst + r.cst;
rs.len = l.len + r.len;
rs.lc = l.lc, rs.rc = r.rc;
if (l.ld == l.len && l.lc == r.lc)
rs.ld = l.ld + r.ld, h = 1;
else
rs.ld = l.ld;
if (r.rd == r.len && l.rc == r.rc)
rs.rd = l.rd + r.rd, h = 1;
else
rs.rd = r.rd;
if (l.rd != l.len && r.ld != r.len && l.rc == r.lc) {
if (l.rc != 'X')
rs.cst += (l.rd + r.ld) / 2;
} else if (!h) {
if (l.rd != l.len && l.rc != 'X')
rs.cst += l.rd / 2;
if (r.ld != r.len && r.lc != 'X')
rs.cst += r.ld / 2;
}
return rs;
}
void ini(ll s, ll e, ll d) {
if (s < e) {
ini(s, s + e >> 1, d * 2), ini(s + e + 2 >> 1, e, d * 2 + 1);
seg[d] = mg(seg[d * 2], seg[d * 2 + 1]);
} else {
seg[d] = {0, 1, 1, 1, st[s - 1], st[s - 1]};
}
}
T fnd(ll s, ll e, ll d) {
if (s > r || e < l)
return {0, 0, 0, 0, 0, 0};
if (s >= l && e <= r)
return seg[d];
return mg(fnd(s, s + e >> 1, d * 2), fnd(s + e + 2 >> 1, e, d * 2 + 1));
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> n >> q >> st;
ini(1, n, 1);
while (q--) {
cin >> l >> r;
T rs = fnd(1, n, 1);
ll res = rs.cst;
if (rs.lc != 'X')
res += rs.ld / 2;
if (rs.rc != 'X' && rs.rd != rs.len)
res += rs.rd / 2;
cout << res << '\n';
}
return 0;
}
Submission Info
Submission Time
2026-05-16 14:09:27+0900
Task
D - Coloring
User
iAi
Language
C++23 (GCC 15.2.0)
Score
100
Code Size
1772 Byte
Status
AC
Exec Time
226 ms
Memory
44872 KiB
Compile Error
./Main.cpp: In function 'void ini(ll, ll, ll)':
./Main.cpp:48:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
48 | ini(s, s + e >> 1, d * 2), ini(s + e + 2 >> 1, e, d * 2 + 1);
| ~~^~~
./Main.cpp:48:54: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
48 | ini(s, s + e >> 1, d * 2), ini(s + e + 2 >> 1, e, d * 2 + 1);
| ~~~~~~^~~
./Main.cpp: In function 'T fnd(ll, ll, ll)':
./Main.cpp:59:28: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
59 | return mg(fnd(s, s + e >> 1, d * 2), fnd(s + e + 2 >> 1, e, d * 2 + 1));
| ~~^~~
./Main.cpp:59:56: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
59 | return mg(fnd(s, s + e >> 1, d * 2), fnd(s + e + 2 >> 1, e, d * 2 + 1));
| ~~~~~~^~~
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
100 / 100
Status
Set Name
Test Cases
Sample
00-sample-001.txt
All
00-sample-001.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt, 01-037.txt, 01-038.txt, 01-039.txt, 01-040.txt, 01-041.txt, 01-042.txt, 01-043.txt
Case Name
Status
Exec Time
Memory
00-sample-001.txt
AC
2 ms
3408 KiB
01-001.txt
AC
226 ms
44716 KiB
01-002.txt
AC
215 ms
44692 KiB
01-003.txt
AC
214 ms
44864 KiB
01-004.txt
AC
222 ms
44732 KiB
01-005.txt
AC
223 ms
44744 KiB
01-006.txt
AC
214 ms
44740 KiB
01-007.txt
AC
209 ms
44740 KiB
01-008.txt
AC
214 ms
44632 KiB
01-009.txt
AC
209 ms
44872 KiB
01-010.txt
AC
216 ms
44684 KiB
01-011.txt
AC
210 ms
44872 KiB
01-012.txt
AC
214 ms
44860 KiB
01-013.txt
AC
217 ms
44732 KiB
01-014.txt
AC
214 ms
44684 KiB
01-015.txt
AC
210 ms
44872 KiB
01-016.txt
AC
195 ms
44676 KiB
01-017.txt
AC
197 ms
44656 KiB
01-018.txt
AC
193 ms
44740 KiB
01-019.txt
AC
189 ms
44692 KiB
01-020.txt
AC
150 ms
44868 KiB
01-021.txt
AC
150 ms
44728 KiB
01-022.txt
AC
151 ms
44724 KiB
01-023.txt
AC
167 ms
44684 KiB
01-024.txt
AC
171 ms
44680 KiB
01-025.txt
AC
201 ms
44860 KiB
01-026.txt
AC
201 ms
44728 KiB
01-027.txt
AC
197 ms
44724 KiB
01-028.txt
AC
196 ms
44728 KiB
01-029.txt
AC
192 ms
44744 KiB
01-030.txt
AC
195 ms
44740 KiB
01-031.txt
AC
195 ms
44872 KiB
01-032.txt
AC
196 ms
44692 KiB
01-033.txt
AC
199 ms
44756 KiB
01-034.txt
AC
158 ms
44740 KiB
01-035.txt
AC
155 ms
44716 KiB
01-036.txt
AC
159 ms
44688 KiB
01-037.txt
AC
190 ms
44744 KiB
01-038.txt
AC
1 ms
3608 KiB
01-039.txt
AC
1 ms
3608 KiB
01-040.txt
AC
1 ms
3580 KiB
01-041.txt
AC
1 ms
3532 KiB
01-042.txt
AC
1 ms
3608 KiB
01-043.txt
AC
1 ms
3580 KiB