Submission #75817737
Source Code Expand
#include <bits/stdc++.h>
#pragma GCC optimize("O3,fast-math")
using namespace std;
using ll = long long;
int n,q,L,R,x[303030],r[303030],l[303030],dupli[303030];
string s;
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> q;
cin >> s;
for(int i=1;i<=n;i++) if(s[i-1]=='X') x[i]++;
for(int i=1;i<=n;i++) x[i]+=x[i-1]; // prefix sum
for(int i=1;i<=n;) {
int cnt=0, pos=i;
if(s[i-1]=='X') {
i++; continue;
}
while(i<=n && s[i-1]==s[pos-1]) cnt++, i++;
if(cnt==1) continue;
dupli[pos]=cnt/2;
for(int j=pos;j<i;j++) l[j]=pos-1, r[j]=i;
}
for(int i=1;i<=n;i++) dupli[i]+=dupli[i-1];
//for(int i=1;i<=n;i++) cout << l[i] << " "; cout << "\n";
//for(int i=1;i<=n;i++) cout << r[i] << " "; cout << endl;
while(q--) {
cin >> L >> R;
int ol=L, orr=R;
int ans=0;
if(r[L]) ans+=(r[L]-L)/2, L=r[L];
if(l[R]) ans+=(R-l[R])/2, R=l[R];
if(L>R+1) {// exception
cout << (orr-ol+1)/2 << "\n";
continue;
}
//cout << L << R << endl;
//ans+=x[R]-x[L-1];
ans+=dupli[R]-dupli[L-1];
cout << ans << "\n";
//cout << endl;
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Coloring |
| User | Hakuaa_2 |
| Language | C++23 (GCC 15.2.0) |
| Score | 100 |
| Code Size | 1312 Byte |
| Status | AC |
| Exec Time | 46 ms |
| Memory | 8660 KiB |
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 | 3552 KiB |
| 01-001.txt | AC | 46 ms | 8660 KiB |
| 01-002.txt | AC | 45 ms | 8456 KiB |
| 01-003.txt | AC | 45 ms | 8504 KiB |
| 01-004.txt | AC | 45 ms | 8452 KiB |
| 01-005.txt | AC | 45 ms | 8516 KiB |
| 01-006.txt | AC | 45 ms | 8508 KiB |
| 01-007.txt | AC | 45 ms | 8500 KiB |
| 01-008.txt | AC | 45 ms | 8628 KiB |
| 01-009.txt | AC | 45 ms | 8496 KiB |
| 01-010.txt | AC | 45 ms | 8632 KiB |
| 01-011.txt | AC | 45 ms | 8432 KiB |
| 01-012.txt | AC | 45 ms | 8488 KiB |
| 01-013.txt | AC | 45 ms | 8656 KiB |
| 01-014.txt | AC | 45 ms | 8512 KiB |
| 01-015.txt | AC | 45 ms | 8504 KiB |
| 01-016.txt | AC | 36 ms | 8456 KiB |
| 01-017.txt | AC | 36 ms | 8580 KiB |
| 01-018.txt | AC | 37 ms | 8476 KiB |
| 01-019.txt | AC | 32 ms | 6008 KiB |
| 01-020.txt | AC | 33 ms | 6152 KiB |
| 01-021.txt | AC | 32 ms | 6152 KiB |
| 01-022.txt | AC | 32 ms | 6072 KiB |
| 01-023.txt | AC | 42 ms | 8504 KiB |
| 01-024.txt | AC | 41 ms | 8496 KiB |
| 01-025.txt | AC | 41 ms | 8436 KiB |
| 01-026.txt | AC | 42 ms | 8656 KiB |
| 01-027.txt | AC | 41 ms | 8428 KiB |
| 01-028.txt | AC | 39 ms | 8616 KiB |
| 01-029.txt | AC | 32 ms | 6144 KiB |
| 01-030.txt | AC | 43 ms | 8652 KiB |
| 01-031.txt | AC | 42 ms | 8432 KiB |
| 01-032.txt | AC | 40 ms | 8268 KiB |
| 01-033.txt | AC | 38 ms | 8408 KiB |
| 01-034.txt | AC | 34 ms | 7320 KiB |
| 01-035.txt | AC | 36 ms | 7412 KiB |
| 01-036.txt | AC | 35 ms | 7180 KiB |
| 01-037.txt | AC | 42 ms | 8480 KiB |
| 01-038.txt | AC | 1 ms | 3544 KiB |
| 01-039.txt | AC | 1 ms | 3816 KiB |
| 01-040.txt | AC | 1 ms | 3740 KiB |
| 01-041.txt | AC | 1 ms | 3508 KiB |
| 01-042.txt | AC | 1 ms | 3364 KiB |
| 01-043.txt | AC | 1 ms | 3816 KiB |