Cod sursa(job #1309018)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 5 ianuarie 2015 07:07:11
Problema Prefix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 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;

		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;
		}

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

		fout<<l<<'\n';

	}
}