91 2021. 01. 10 22:52:33 Babják Péter DNS cpp11 Elfogadva 40/40 8ms 8176 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
   	string s;cin>>s;
   	int sz=s.size();
   	char t[4]={'A','C','T','G'};
   	int mx=0;
	for(char c:t)
	{
		int tm[sz];	
		int first[400040];
		for(int i=0;i<400040;i++)
		{
			first[i]=-2;
		}
		tm[0]=200002+((s[0]==c) ? 1 : -1);
		first[tm[0]]=0;
		first[200002]=-1;
		for(int i=1;i<sz;i++)
		{
			tm[i]=tm[i-1]+((s[i]==c)? 1 : -1);//tm[i] az elsõ i karakter között levõ db(c)-db(másik3ch)
			if(first[tm[i]]!=-2)//ez a részösszeg már volt egyszer azaz valamelyik állapotba "visszatértünk"
			{
				mx=max(mx,i-first[tm[i]]);//a 2 közti szakaszon annyit csökkent mint amennyit nõtt azaz a szakasznak legalább fele c volt.
			}
			else
			{
				first[tm[i]]=i;
			}
		}
		if(tm[sz-1]>=200002)
		{
			mx=sz;
		}
	}
	cout<<mx<<endl;
   	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 4ms 4848 KiB
2 Elfogadva 0/0 8ms 7268 KiB
3 Elfogadva 2/2 3ms 5136 KiB
4 Elfogadva 2/2 3ms 5136 KiB
5 Elfogadva 2/2 4ms 5144 KiB
6 Elfogadva 2/2 3ms 5144 KiB
7 Elfogadva 2/2 3ms 5160 KiB
8 Elfogadva 4/4 4ms 5844 KiB
9 Elfogadva 4/4 4ms 6296 KiB
10 Elfogadva 4/4 4ms 6512 KiB
11 Elfogadva 4/4 6ms 6852 KiB
12 Elfogadva 4/4 6ms 7204 KiB
13 Elfogadva 5/5 6ms 7668 KiB
14 Elfogadva 5/5 7ms 8176 KiB