Cod sursa(job #1309020)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 5 ianuarie 2015 07:14:59
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <fstream>
#include <string>
#include <vector>

int main(){
	std::ifstream fin("prefix.in");
	std::ofstream fout("prefix.out");

	int T; fin>>T;
	while(T--){
		std::string s; fin>>s;

		unsigned l=0;

		std::vector<unsigned> prefix(s.size());
		prefix[0]=0;
		unsigned k=0;
		for(unsigned i=1;i<s.size();++i){
			while(k>0&&s[i]!=s[k]) k=prefix[k-1];

			if(s[k]==s[i]) k++;

			prefix[i]=k;

		}
		for(unsigned i=s.size()-1;i>0;--i)
			if(prefix[i]&&(i+1)%(i+1-prefix[i])==0){ l=i+1; break;}

		fout<<l<<'\n';
	}
}