204202026-01-06 18:06:05algoproBlokk eliminációcpp17Hibás válasz 28/5017ms2332 KiB
// UUID: f23c9b84-5d08-4437-84cf-506e5732ed15
#include <bits/stdc++.h>
using namespace std;
void solve()
{
	string s; cin>>s;
	vector<int> v{0};
	int curr=1;
	for(int i=1; i<s.size(); i++)
	{
		if(s[i]!=s[i-1])
		{
			v.push_back(min(curr,2));
			curr=0;
		}
		curr++;
	}
	int n=v.size();
	v.push_back(min(curr,2));
	array<int, 2> egy,ket;
	egy[0]=egy[1]=0;
	ket[0]=n+100,ket[1]=0;
	/*for(int i=1; i<=n; i++)
		cout<<v[i]<<" ";
	cout<<endl;*/
	for(int i=1; i<=n; i++)
	{
		array<int, 2> uj1{n+100,0},uj2{n+100,0};
		if(v[i]==1)
		{
			if(ket[0]<=ket[1]) uj1[0]=ket[0]+2,uj1[1]=ket[1]+2;
			if(egy[0]<=egy[1]) uj1[0]=min(uj1[0],egy[0]+1),uj1[1]=max(uj1[1],egy[1]+1);
			if(ket[0]<=ket[1] && ket[1]>0)
			{
				uj2[0]=max(0,ket[0]-1);
				uj2[1]=ket[1]-1;
			}
		}
		else
		{
			if(ket[0]<=ket[1] && ket[1]>0)
			{
				uj2[0]=max(0,ket[0]-1);
				uj2[1]=ket[1]-1;
			}
			//ha nem toroljuk ki
			if(ket[0]<=ket[1]) uj2[0]=min(uj2[0],ket[0]+1),uj2[1]=max(uj2[1],ket[1]+1);
			if(egy[0]<=egy[1]) uj2[0]=min(uj2[0],egy[0]),uj2[1]=max(uj2[1],egy[1]);
		}
		ket=uj2,egy=uj1;
		//cout<<i<<": "<<ket[0]<<" "<<ket[1]<<" "<<endl;
	}
	//cout<<n<<endl;
	cout<<(ket[0]<=ket[1] && ket[0]<=0?"IGEN\n":"NEM\n");
}
int main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

	int t=1; cin>>t;
	while(t--) solve();
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base28/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/016ms2208 KiB
3Elfogadva2/21ms500 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Hibás válasz0/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms500 KiB
12Hibás válasz0/21ms316 KiB
13Elfogadva2/21ms500 KiB
14Elfogadva2/22ms640 KiB
15Hibás válasz0/32ms564 KiB
16Elfogadva3/32ms564 KiB
17Elfogadva3/317ms2316 KiB
18Hibás válasz0/314ms2304 KiB
19Elfogadva3/317ms2268 KiB
20Elfogadva3/317ms2332 KiB
21Hibás válasz0/414ms2312 KiB
22Hibás válasz0/417ms2204 KiB