15752022-11-26 21:12:50Babják PéterBlokk eliminációcpp11Hibás válasz 32/5045ms4764 KiB
#include <bits/stdc++.h>
#define MAXN 201000
using namespace std;
int n,t,cnt;
char pch;
string ANS[2];
struct block
{
	bool nb;
	bool val;	
};
vector<block> blocks;
bool RX(int l,int r)
{
	if((l+r)%2==1)return 0;
	else if(blocks[(l+r)/2].nb==1) return 1;
	return 0;
}
bool RZ(int l,int r)
{
	if(blocks[l].val==0 && RX(l,r)==1)return 1;
	if(RX(l+1,r)==1 && blocks[l].val==0) return 1;
	if(RX(l,r-1)==1 && blocks[r].val==0) return 1;
	return 0;
}
bool RE(int l,int r)
{
	if(blocks[l].val==1 && RX(l,r)==1)return 1;
	if(RX(l+1,r)==1 && blocks[l].val==1) return 1;
	if(RX(l,r-1)==1 && blocks[r].val==1) return 1;
	return 0;
}
int main()
{
	ANS[0]="NEM\n";
	ANS[1]="IGEN\n";
	cin>>t;
	while(t--)
	{
		blocks.clear();
		cnt=0;
		string s;
		cin>>s;
		s+='-';
		pch='-';
		for(char ch:s)
		{
			if(ch!=pch)
			{
				block b;
				if(cnt>1) b.nb=1;
				else b.nb=0;
				
				if(pch=='0')b.val=0;
				else b.val=1; 
				cnt=1;
				if(pch!='-')blocks.push_back(b);
				pch=ch;
			}
			else cnt++;
		}
		n=blocks.size();
		bool ans=RX(0,n-1);
		for(int i=0;i<n;i++)
		{
			if(RZ(0,i) && RZ(i+1,n-1)) ans=1;
			if(RE(0,i) && RE(i+1,n-1)) ans=1;
			if(RX(0,i) && RX(i+1,n-1)) ans=1;
		}
		if(ans==1) cout<<"IGEN\n";
		else cout<<"NEM\n";
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base32/50
1Elfogadva0/03ms1808 KiB
2Elfogadva0/041ms3464 KiB
3Elfogadva2/22ms2232 KiB
4Elfogadva2/22ms2324 KiB
5Elfogadva2/22ms2564 KiB
6Hibás válasz0/22ms2640 KiB
7Elfogadva2/22ms2596 KiB
8Elfogadva2/22ms2728 KiB
9Hibás válasz0/22ms2800 KiB
10Elfogadva2/22ms2924 KiB
11Hibás válasz0/22ms2932 KiB
12Hibás válasz0/22ms2816 KiB
13Elfogadva2/23ms2948 KiB
14Elfogadva2/26ms3264 KiB
15Hibás válasz0/36ms3272 KiB
16Elfogadva3/36ms3100 KiB
17Elfogadva3/343ms4540 KiB
18Hibás válasz0/341ms4580 KiB
19Elfogadva3/341ms4580 KiB
20Elfogadva3/345ms4764 KiB
21Hibás válasz0/441ms4668 KiB
22Elfogadva4/441ms4660 KiB