8862022-01-25 09:46:27kidesoDNScpp14Időlimit túllépés 18/40398ms13156 KiB
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string s;
int k, maxi, i, N, maxi1, p;
bool jo;

int kar(char c) {
    if (c == 'A') return 1;
    if (c == 'C') return 2;
    if (c == 'G') return 3;
    return 4;
}

int main()
{
    cin >> s;
    N = s.length();
    vector <vector<int>> x(N + 1, vector <int>(5, 0));

    maxi = 1;

    for (i = 1; i <= N; ++i){
        k = kar(s[i - 1]);

        x[i] = x[i - 1];
        x[i][k]++;
        x[i][0] = max(x[i][0], x[i][k]);
    }

    for (i = 2; i <= N; ++i){
        maxi1 = x[i][0];

        k = max(1, i - 2 * maxi1 + 1);
        jo = false;

        while (!jo){
            for (int j = 1; j <= 4; ++j){
                p = x[i][j] - x[k - 1][j];
                if (2 * p >= i - k + 1){
                    jo = true;
                    break;
                }
            }

            k += 2;
        }

        k -= 2;
        maxi = max(maxi, i - k + 1);
    }

    cout << maxi;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base18/40
1Elfogadva0/02ms1740 KiB
2Időlimit túllépés0/0398ms12260 KiB
3Elfogadva2/21ms2028 KiB
4Elfogadva2/21ms2032 KiB
5Elfogadva2/21ms2032 KiB
6Elfogadva2/21ms2064 KiB
7Elfogadva2/22ms2100 KiB
8Elfogadva4/490ms7552 KiB
9Elfogadva4/4214ms10948 KiB
10Időlimit túllépés0/4374ms6956 KiB
11Időlimit túllépés0/4395ms8740 KiB
12Időlimit túllépés0/4384ms10084 KiB
13Időlimit túllépés0/5398ms11892 KiB
14Időlimit túllépés0/5395ms13156 KiB