Cod sursa(job #2440419)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 18 iulie 2019 13:26:41
Problema Prefix Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

void solve()
{
	string s = " ", ss;
	cin >> ss;
	s += ss;
	set<int> distances;

	char c = s[1];
	int maxLen = 0;

	for (int i = 2; i < s.size(); ++i)
	{
		if (s[i] == c)
		{
			distances.insert(i - 1);
		}
		vector<int> toErase;
		for (auto d : distances)
		{
			if (s[i - d] == s[i])
			{
				if (i % d == 0 && i / d >= 2)
					maxLen = i;
			}
			else
				toErase.push_back(d);
		}

		for (auto x : toErase)
			distances.erase(x);
	}

	cout << maxLen << '\n';
}

int main()
{
	freopen("prefix.in", "r", stdin);
	freopen("prefix.out", "w", stdout);

	int t;
	cin >> t;
	
	for (int i = 0; i < t; ++i)
		solve();


	

	return 0;
}