Cod sursa(job #2023935)
| Utilizator | Data | 19 septembrie 2017 18:16:02 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.67 kb |
#include <fstream>
#include <vector>
#include <string>
#define Nmax 2000005
using namespace std;
string A;
int pi[Nmax],w,n;
ifstream f("prefix.in");
ofstream g("prefix.out");
vector <int> rez;
int main()
{
int i,cnt=0;
f>>n;
while(n)
{
f>>A;
int raspuns=0;
for(i=1; i<A.size(); i++)
{
while(w!=0 && A[i]!=A[w]) w=pi[w-1];
if(A[i]==A[w])
w++;
pi[i]=w;
}
w=0;
for(i=A.size();i>=1;i--)
{
if(pi[i]&&(i+1)%(i+1-pi[i])==0)
{
raspuns=i+1;
break;
}
}
g<<raspuns<<'\n';
n--;
}
return 0;
}
