Cod sursa(job #2481554)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 27 octombrie 2019 07:13:05
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

ifstream fin("prefix.in");
ofstream fout("prefix.out");

string s;
int p[1000041];
int maxi;

void prefixify(){
	maxi = 0;
	int x = 0;
	for(int i = 2; i < s.size(); i++){
		while(x > 0 && s[i] != s[x+1]){
			x = p[x];
		}
		if(s[i] == s[x+1]){
			x++;
		}
		p[i] = x;
		
		int d = i-x;
		if(x != 0 && i % d == 0){
			maxi = max(maxi, (i/d)*d);
		}
	}
}

int main(){
	s.reserve(1000041);
	
	int n;
	fin >> n;
	
	for(int i = 0; i < n; i++){
		fin >> s;
		s.insert(s.begin(), ' ');
		prefixify();
		fout << maxi << "\n";
	}
}