110 2021. 01. 12 18:09:19 Tiszay Dávid DNS cpp11 Időlimit túllépés 22/40 365ms 27300 KiB
#include <bits/stdc++.h>
using namespace std;

#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define flog(n) 31-__builtin_clz((n))
#define clog(n) 32-__builtin_clz((n)-1)
#define fori(i,a,b) for(long long int i=(a);i<=(b);i++)
#define forib(i,a,b) for(long long int i=(a);i>=(b);i--)
using ll=long long; using pi=pair<int,int>; using vi=vector<int>; using vl=vector<ll>;

string n;
ll maxi = 0;

void max_length(char t){
    map<ll ,ll> m;
    map<ll, bool> since;
    m[0] = -1;
    ll curr = 0;
    fori(i, 0, n.length() - 1){
        if (n[i] == t){
            curr++;
        } else {
            curr--;
        }
        if (since[curr] == false){
            since[curr] = true;
            m[curr] = i;
        }
        if (curr >= 0){
            maxi = max(maxi, i + 1);
        } else {
            maxi = max(maxi, i - m[curr]);
        }
    }
}


void solve(){
    cin >> n;
    max_length('A');
    max_length('T');
    max_length('G');
    max_length('C');
    cout << maxi << endl;
}
int main() {
  if(true){ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);}
  solve();
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 22/40
1 Elfogadva 0/0 2ms 1752 KiB
2 Időlimit túllépés 0/0 365ms 17556 KiB
3 Elfogadva 2/2 1ms 2040 KiB
4 Elfogadva 2/2 1ms 2048 KiB
5 Elfogadva 2/2 1ms 2052 KiB
6 Elfogadva 2/2 1ms 2096 KiB
7 Elfogadva 2/2 2ms 2144 KiB
8 Elfogadva 4/4 101ms 10288 KiB
9 Elfogadva 4/4 190ms 15552 KiB
10 Elfogadva 4/4 254ms 17380 KiB
11 Időlimit túllépés 0/4 354ms 22788 KiB
12 Időlimit túllépés 0/4 326ms 20604 KiB
13 Időlimit túllépés 0/5 317ms 24560 KiB
14 Időlimit túllépés 0/5 317ms 27300 KiB