252902026-02-19 00:56:47999DNScpp17Hibás válasz 36/4023ms7000 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
    string s;cin>>s;
    int n=s.size();
    vector<int> pref1(n),pref2(n),pref3(n),pref4(n);
    for(int i = 0;i<n;i++){
        if(s[i]=='A')pref1[i]++;
        if(s[i]=='C')pref2[i]++;
        if(s[i]=='G')pref3[i]++;
        if(s[i]=='T')pref4[i]++;
        if(i>0){
            pref1[i]+=pref1[i-1];
            pref2[i]+=pref2[i-1];
            pref3[i]+=pref3[i-1];
            pref4[i]+=pref4[i-1];
        }
    }
    int lo=1,hi=n+1,mi=0;
    while(lo<hi-1){
        mi=(lo+hi)/2;
        bool b=false;
        for(int i = 0;i+mi-1<n;i++){
            int half=(mi+1)/2;
            if(pref1[i+mi-1]-(i>0?pref1[i-1]:0)>=half)b=true;
            if(pref2[i+mi-1]-(i>0?pref2[i-1]:0)>=half)b=true;
            if(pref3[i+mi-1]-(i>0?pref3[i-1]:0)>=half)b=true;
            if(pref4[i+mi-1]-(i>0?pref4[i-1]:0)>=half)b=true;
            if(b)break;
        }
        if(b)lo=mi;
        else hi=mi;
    }
    cout<<lo;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base36/40
1Elfogadva0/01ms316 KiB
2Hibás válasz0/023ms6852 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms500 KiB
5Hibás válasz0/21ms316 KiB
6Elfogadva2/21ms508 KiB
7Hibás válasz0/21ms316 KiB
8Elfogadva4/44ms1844 KiB
9Elfogadva4/46ms3132 KiB
10Elfogadva4/48ms3776 KiB
11Elfogadva4/410ms4548 KiB
12Elfogadva4/49ms5308 KiB
13Elfogadva5/510ms6360 KiB
14Elfogadva5/514ms7000 KiB