1492021-02-02 18:14:35kidesoDNScpp11Időlimit túllépés 14/40395ms6256 KiB
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;

//ifstream cin("muti.in");
//ofstream cout("muti.out");

struct adat
{
    int sz[5] = { 0,0,0,0,0 };
};

string s;
int k, maxi, i, N, maxi1, p;
bool jo;
map <char, int> kar;

int main()
{
    cin >> s;
    N = s.size();
    vector <adat> x(N + 1);
    
    kar['A'] = 1;
    kar['C'] = 2;
    kar['G'] = 3;
    kar['T'] = 4;

    maxi = 1;

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

        for (int j = 1; j <= 4; ++j)
            if (j == k) x[i].sz[j] = x[i - 1].sz[j] + 1;
            else x[i].sz[j] = x[i - 1].sz[j];
    }

    for (i = 2; i <= N; ++i)
    {
        maxi1 = 0;
        for (int j = 1; j <= 4; ++j)
            maxi1 = max(maxi1, x[i].sz[j]);

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

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

            ++k;
        }

        --k;
        maxi = max(maxi, i - k + 1);
    }
        
    cout << maxi;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base14/40
1Elfogadva0/02ms1744 KiB
2Időlimit túllépés0/0335ms5416 KiB
3Elfogadva2/21ms2028 KiB
4Elfogadva2/21ms2040 KiB
5Elfogadva2/21ms2052 KiB
6Elfogadva2/21ms2056 KiB
7Elfogadva2/23ms2076 KiB
8Elfogadva4/4129ms3944 KiB
9Időlimit túllépés0/4301ms5556 KiB
10Időlimit túllépés0/4395ms3512 KiB
11Időlimit túllépés0/4393ms4276 KiB
12Időlimit túllépés0/4310ms4972 KiB
13Időlimit túllépés0/5363ms5632 KiB
14Időlimit túllépés0/5374ms6256 KiB