232962026-01-18 16:11:56abcdDNScpp17Hibás válasz 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';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base38/40
1Elfogadva0/01ms316 KiB
2Elfogadva0/021ms13252 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Hibás válasz0/21ms508 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva4/46ms3452 KiB
9Elfogadva4/49ms5576 KiB
10Elfogadva4/412ms6704 KiB
11Elfogadva4/413ms8644 KiB
12Elfogadva4/416ms9924 KiB
13Elfogadva5/519ms11972 KiB
14Elfogadva5/518ms13272 KiB