Submission #75818141
Source Code Expand
#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
#define int long long
using namespace std;
string S;
array<vector<array<int, 2>>, 303030> A;
array<int, 303030> L, R, F, ans;
int N, Q;
void update(int idx, int val) {
for (; idx <= N; F[idx] += val, idx += idx & -idx);
}
int sum(int idx) {
int res = 0;
for (; idx; res += F[idx], idx -= idx & -idx);
return res;
}
signed main() {
cin >> N >> Q;
cin >> S;
S = '#' + S + '#';
for (int i = 1; i <= N; i++) {
L[i] = i;
if (S[i] != 'X' && S[i] == S[i - 1]) {
L[i] = L[i - 1];
}
}
for (int i = N; i; i--) {
R[i] = i;
if (S[i] != 'X' && S[i] == S[i + 1]) {
R[i] = R[i + 1];
}
}
for (int i = 0; i < Q; i++) {
int l, r;
cin >> l >> r;
A[r].push_back({i, l});
}
for (int r = 1; r <= N; r++) {
if (R[r] == r) {
update(L[r], r - L[r] + 1 >> 1);
}
for (auto [idx, l] : A[r]) {
if (R[l] >= r) {
ans[idx] = r - l + 1 >> 1;
continue;
}
ans[idx] = sum(r) - sum(l - 1) + (R[r] > r) * (r - L[r] + 1 >> 1) + (L[l] < l) * (R[l] - l + 1 >> 1);
}
}
for (int i = 0; i < Q; i++) {
cout << ans[i] << '\n';
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Coloring |
| User | fortunatly |
| Language | C++23 (GCC 15.2.0) |
| Score | 100 |
| Code Size | 1219 Byte |
| Status | AC |
| Exec Time | 167 ms |
| Memory | 27956 KiB |
Compile Error
./Main.cpp: In function 'int main()':
./Main.cpp:50:47: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
50 | update(L[r], r - L[r] + 1 >> 1);
| ~~~~~~~~~^~~
./Main.cpp:55:50: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
55 | ans[idx] = r - l + 1 >> 1;
| ~~~~~~^~~
./Main.cpp:60:81: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
60 | ans[idx] = sum(r) - sum(l - 1) + (R[r] > r) * (r - L[r] + 1 >> 1) + (L[l] < l) * (R[l] - l + 1 >> 1);
| ~~~~~~~~~^~~
./Main.cpp:60:116: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
60 | ans[idx] = sum(r) - sum(l - 1) + (R[r] > r) * (r - L[r] + 1 >> 1) + (L[l] < l) * (R[l] - l + 1 >> 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 | 3 ms | 3440 KiB |
| 01-001.txt | AC | 165 ms | 27792 KiB |
| 01-002.txt | AC | 161 ms | 27864 KiB |
| 01-003.txt | AC | 160 ms | 27956 KiB |
| 01-004.txt | AC | 161 ms | 27864 KiB |
| 01-005.txt | AC | 162 ms | 27788 KiB |
| 01-006.txt | AC | 161 ms | 27804 KiB |
| 01-007.txt | AC | 161 ms | 27860 KiB |
| 01-008.txt | AC | 161 ms | 27788 KiB |
| 01-009.txt | AC | 160 ms | 27868 KiB |
| 01-010.txt | AC | 160 ms | 27788 KiB |
| 01-011.txt | AC | 160 ms | 27828 KiB |
| 01-012.txt | AC | 160 ms | 27776 KiB |
| 01-013.txt | AC | 160 ms | 27908 KiB |
| 01-014.txt | AC | 160 ms | 27900 KiB |
| 01-015.txt | AC | 167 ms | 27840 KiB |
| 01-016.txt | AC | 146 ms | 25488 KiB |
| 01-017.txt | AC | 146 ms | 25484 KiB |
| 01-018.txt | AC | 146 ms | 25492 KiB |
| 01-019.txt | AC | 157 ms | 27844 KiB |
| 01-020.txt | AC | 141 ms | 27020 KiB |
| 01-021.txt | AC | 141 ms | 27152 KiB |
| 01-022.txt | AC | 140 ms | 27000 KiB |
| 01-023.txt | AC | 143 ms | 27936 KiB |
| 01-024.txt | AC | 146 ms | 27952 KiB |
| 01-025.txt | AC | 156 ms | 27864 KiB |
| 01-026.txt | AC | 156 ms | 27916 KiB |
| 01-027.txt | AC | 157 ms | 27784 KiB |
| 01-028.txt | AC | 155 ms | 27916 KiB |
| 01-029.txt | AC | 155 ms | 27932 KiB |
| 01-030.txt | AC | 155 ms | 27836 KiB |
| 01-031.txt | AC | 155 ms | 27928 KiB |
| 01-032.txt | AC | 155 ms | 27336 KiB |
| 01-033.txt | AC | 154 ms | 26312 KiB |
| 01-034.txt | AC | 151 ms | 26520 KiB |
| 01-035.txt | AC | 139 ms | 26520 KiB |
| 01-036.txt | AC | 140 ms | 26636 KiB |
| 01-037.txt | AC | 154 ms | 27788 KiB |
| 01-038.txt | AC | 2 ms | 3528 KiB |
| 01-039.txt | AC | 2 ms | 3448 KiB |
| 01-040.txt | AC | 2 ms | 3488 KiB |
| 01-041.txt | AC | 2 ms | 3432 KiB |
| 01-042.txt | AC | 2 ms | 3492 KiB |
| 01-043.txt | AC | 2 ms | 3440 KiB |