256512026-02-23 22:21:05GeneratrollBlokk eliminációcpp17Időlimit túllépés 6/50400ms6204 KiB
#include <bits/stdc++.h>
using namespace std;

void solve() {
	string s;
	cin >> s;
	int n = s.length();
	vector<int> l;
	int cur = 1;
	for (int i = 1; i < n; i++) {
		if (s[i] == s[i - 1]) {
			cur++;
		} else {
			l.push_back(cur);
			cur = 1;
		}
	}
	l.push_back(cur);
	int k = l.size();
	vector<vector<pair<int, int>>> dp(k + 1);
	int mn = -1, mx = -1;
	for (int i = 0; i < k; i++) {
		if (l[i] >= 2) {
			if (mn == -1) {
				mn = i + 1;
			}
			mx = i + 1;
		} else if (mn != -1) {
			dp[k].push_back({mn, mx});
			mn = -1;
			mx = -1;
		}
	}
	if (mn != -1) {
		dp[k].push_back({mn, mx});
	}
	for (int i = k; i >= 1; i--) {
		if (dp[i].empty()) {
			continue;
		}
		sort(dp[i].begin(), dp[i].end());
		vector<pair<int, int>> merged;
		for (auto p : dp[i]) {
			if (merged.empty() || p.first > merged.back().second + 1) {
				merged.push_back(p);
			} else {
				merged.back().second = max(merged.back().second, p.second);
			}
		}
		if (i <= 2) {
			cout << "IGEN" << "\n";
			return;
		}
		for (auto p : merged) {
			int lv = p.first, rv = p.second;
			int il = max(lv, 2), ir = min(rv, i - 1);
			if (il <= ir) {
				dp[i - 2].push_back({il - 1, ir - 1});
			}
			if (lv == 1 && rv > 1) {
				dp[i - 1].push_back({1, rv - 1});
			}
			if (rv == i && lv < i) {
				dp[i - 1].push_back({lv, i - 1});
			}
		}
		dp[i].clear();
		vector<pair<int, int>>().swap(dp[i]);
	}
	cout << "NEM" << "\n";
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t;
	cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/50
1Elfogadva0/01ms316 KiB
2Időlimit túllépés0/0381ms4660 KiB
3Elfogadva2/21ms512 KiB
4Elfogadva2/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Hibás válasz0/27ms484 KiB
12Hibás válasz0/23ms316 KiB
13Hibás válasz0/24ms316 KiB
14Időlimit túllépés0/2400ms964 KiB
15Hibás válasz0/3289ms1208 KiB
16Időlimit túllépés0/3400ms860 KiB
17Időlimit túllépés0/3382ms5172 KiB
18Időlimit túllépés0/3382ms6204 KiB
19Időlimit túllépés0/3377ms4404 KiB
20Időlimit túllépés0/3377ms5172 KiB
21Időlimit túllépés0/4374ms6164 KiB
22Időlimit túllépés0/4400ms4660 KiB