Cod sursa(job #2581042)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 14 martie 2020 14:22:01
Problema Prefix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>
#define N 1000005
using namespace std;
ifstream fin("entries.in");
ofstream fout("prefix.out");

int pi[N],m,n,cnt,t;
char a[N];

int prefix()
{
	int i, q = 0, maxim = 0;

	pi[1] = 0;

	for (i = 2 ; i <= n; ++i)
	{
		while (q && a[q+1] != a[i])
        {
			q = pi[q];
        }
		if (a[q+1] == a[i])
        {
			++q;
        }
		pi[i] = q;
		if(pi[i]!=0&&pi[i]%(i-pi[i])==0)maxim=i;
	}
	return maxim;
}
int main()
{
    fin>>t;
    char car;
    fin>>noskipws>>car;
    for(int q=1;q<=t;q++)
    {
        n=0;
        char car;
        fin>>noskipws>>car;
        while(car!='\n')
        {
            a[++n]=car;
            fin>>noskipws>>car;
        }
        fout<<prefix()<<'\n';
    }
}