Cod sursa(job #1309019)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 5 ianuarie 2015 07:10:08
Problema Prefix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.45 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;
			if(k>0 && (i+1)%(i+1-k)==0) l=i+1;
		}

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