Cod sursa(job #2322280)
| Utilizator | Data | 17 ianuarie 2019 17:26:54 | |
|---|---|---|---|
| Problema | Prefix | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.84 kb |
#include <bits/stdc++.h>
int v[10000001];
char ch[1000001];
int main()
{
int n,k,i,j,q,mx,co;
char c;
FILE*fi,*fo;
fi=fopen("prefix.in","r");
fo=fopen("prefix.out","w");
fscanf(fi,"%d",&n);
fgetc(fi);
for(i=0; i<n; i++)
{
c=fgetc(fi);
k=0;
j=1;
ch[j]=c;
j++;
c=fgetc(fi);
ch[j]=c;
mx=0;
while(c!='\n' && c!=EOF)
{
while(k>0 && c!=ch[k+1])
{
k=v[k];
}
if(c==ch[k+1])
k++;
v[j]=k;
if(v[j]>0 && v[j]%(j-v[j])==0)
mx=j;
j++;
c=fgetc(fi);
ch[j]=c;
}
fprintf(fo,"%d\n",mx);
}
fclose(fi);
fclose(fo);
return 0;
}
