232962026-01-18 16:11:56abcdDNScpp17Wrong answer 38/4021ms13272 KiB
#include <bits/stdc++.h>
using namespace std;

int n;

void update(int i, int x, vector<int>& xl, vector<int>& xr){
    if(xl[x]==-1)xl[x]=i;
    xr[x]=i;
}

int solve(vector<int>& xl, vector<int>& xr){
    int ans=0;
    for(int i=0;i<=2*n;i++){
        if(xl[i]!=-1){
            ans=max(ans,xr[i]-xl[i]);
        }
    }
    return ans;
}

int main(){
    string s;cin>>s;
    n=s.size();
    int a=0,c=0,g=0,t=0;
    vector<int> al(2*n+2,-1),ar(2*n+2,-1),cl(2*n+2,-1),cr(2*n+2,-1);
    vector<int> gl(2*n+2,-1),gr(2*n+2,-1),tl(2*n+2,-1),tr(2*n+2,-1);
    for(int i=0;i<n;i++){
        char ch=s[i];
        if(ch=='A'){
            a++;c--;g--;t--;
        }else if(ch=='C'){
            c++;a--;g--;t--;
        }else if(ch=='G'){
            g++;a--;c--;t--;
        }else{
            t++;a--;g--;c--;
        }
        update(i,a+n,al,ar);
        update(i,c+n,cl,cr);
        update(i,g+n,gl,gr);
        update(i,t+n,tl,tr);
    }
    int ans=0;
    ans=max(ans,solve(al,ar));
    ans=max(ans,solve(cl,cr));
    ans=max(ans,solve(tl,tr));
    ans=max(ans,solve(gl,gr));
    cout<<ans<<'\n';
}
SubtaskSumTestVerdictTimeMemory
base38/40
1Accepted0/01ms316 KiB
2Accepted0/021ms13252 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Wrong answer0/21ms508 KiB
7Accepted2/21ms316 KiB
8Accepted4/46ms3452 KiB
9Accepted4/49ms5576 KiB
10Accepted4/412ms6704 KiB
11Accepted4/413ms8644 KiB
12Accepted4/416ms9924 KiB
13Accepted5/519ms11972 KiB
14Accepted5/518ms13272 KiB