Cod sursa(job #2109152)

Utilizator sebastiannrxRichiteanu Mihai Sebastian sebastiannrx Data 19 ianuarie 2018 11:07:45
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
#define mx 1000001
int z,m,urm[mx];
char p[mx];
void next (int m) {
    int k=0;
    urm[1]=0;
    for (int i=2;i<=m;++i) {
        while (k>0 && p[k+1]!=p[i])
            k=urm[k];
        if (p[k+1]==p[i])
            ++k;
        urm[i]=k;}}
int main () {
    f>>z;
    f.get();
    for (int i=1;i<=z;++i) {
        p[0]='*';
        p[1]='\0';
        f.getline(p+1,mx);
        m=strlen(p);
        next(m);
        int poz=0;
        for (int j=2;j<=m;++j)
            if (urm[j] && j%(j-urm[j])==0)
                poz=j;
        g<<poz<<'\n';}
    return 0;
}