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