Submission #75818914
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[300030];
ll chk[300030], sum[300030];
int main()
{
ios_base::sync_with_stdio(false); cin.tie(0);
ll n,q;
cin>>n>>q;
for (ll i=1;i<=n;i++) cin>>a[i];
vector<ll> en, st;
for (ll i=1;i<=n-1;i++)
{
if (a[i]!=a[i+1]&&a[i]!='X') en.push_back(i);
}
if (a[n]!='X') en.push_back(n);
for (ll i=n;i>=2;i--)
{
if (a[i]!=a[i-1]&&a[i]!='X') st.push_back(i);
}
if (a[1]!='X') st.push_back(1);
reverse(st.begin(),st.end());
for (ll i=2;i<=n;i++)
{
if (a[i]==a[i-1]&&a[i]!='X'&&chk[i-1]==0)
{
chk[i]=1;
sum[i]=1;
}
}
for (ll i=1;i<=n;i++) sum[i]=sum[i-1]+sum[i];
for (ll i=1;i<=q;i++)
{
ll ans=0;
ll l,r;
cin>>l>>r;
ll idx1, idx2;
if (a[l]=='X') idx1 = l;
else idx1 = *lower_bound(en.begin(),en.end(),l);
if (idx1>=r)
{
cout<<(r-l+1)/2<<"\n";
continue;
}
if (a[r]=='X') idx2=r;
else idx2 = *prev(upper_bound(st.begin(),st.end(),r));
ans+=(idx1-l+1)/2+(r-idx2+1)/2;
ans+=sum[idx2-1]-sum[idx1];
cout<<ans<<"\n";
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Coloring |
| User | prologue1017 |
| Language | C++23 (GCC 15.2.0) |
| Score | 100 |
| Code Size | 1312 Byte |
| Status | AC |
| Exec Time | 99 ms |
| Memory | 12108 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 | 1 ms | 3388 KiB |
| 01-001.txt | AC | 99 ms | 11016 KiB |
| 01-002.txt | AC | 99 ms | 10976 KiB |
| 01-003.txt | AC | 98 ms | 10980 KiB |
| 01-004.txt | AC | 99 ms | 10940 KiB |
| 01-005.txt | AC | 98 ms | 10996 KiB |
| 01-006.txt | AC | 98 ms | 10936 KiB |
| 01-007.txt | AC | 98 ms | 10892 KiB |
| 01-008.txt | AC | 98 ms | 11072 KiB |
| 01-009.txt | AC | 99 ms | 11000 KiB |
| 01-010.txt | AC | 99 ms | 10936 KiB |
| 01-011.txt | AC | 99 ms | 11004 KiB |
| 01-012.txt | AC | 99 ms | 10988 KiB |
| 01-013.txt | AC | 99 ms | 10980 KiB |
| 01-014.txt | AC | 99 ms | 11008 KiB |
| 01-015.txt | AC | 99 ms | 10932 KiB |
| 01-016.txt | AC | 34 ms | 8400 KiB |
| 01-017.txt | AC | 34 ms | 8444 KiB |
| 01-018.txt | AC | 34 ms | 8444 KiB |
| 01-019.txt | AC | 34 ms | 6108 KiB |
| 01-020.txt | AC | 94 ms | 12108 KiB |
| 01-021.txt | AC | 93 ms | 11996 KiB |
| 01-022.txt | AC | 77 ms | 9528 KiB |
| 01-023.txt | AC | 73 ms | 10104 KiB |
| 01-024.txt | AC | 69 ms | 9620 KiB |
| 01-025.txt | AC | 49 ms | 8144 KiB |
| 01-026.txt | AC | 49 ms | 8156 KiB |
| 01-027.txt | AC | 49 ms | 8184 KiB |
| 01-028.txt | AC | 53 ms | 8316 KiB |
| 01-029.txt | AC | 34 ms | 6076 KiB |
| 01-030.txt | AC | 49 ms | 8440 KiB |
| 01-031.txt | AC | 52 ms | 8380 KiB |
| 01-032.txt | AC | 47 ms | 8000 KiB |
| 01-033.txt | AC | 46 ms | 8352 KiB |
| 01-034.txt | AC | 70 ms | 9636 KiB |
| 01-035.txt | AC | 69 ms | 9580 KiB |
| 01-036.txt | AC | 68 ms | 9612 KiB |
| 01-037.txt | AC | 52 ms | 8380 KiB |
| 01-038.txt | AC | 1 ms | 3448 KiB |
| 01-039.txt | AC | 1 ms | 3408 KiB |
| 01-040.txt | AC | 1 ms | 3360 KiB |
| 01-041.txt | AC | 1 ms | 3408 KiB |
| 01-042.txt | AC | 1 ms | 3364 KiB |
| 01-043.txt | AC | 1 ms | 3452 KiB |