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
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 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