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
AC × 1
AC × 44
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