Cod sursa(job #1830964)

Utilizator dumitrualexAlex Dumitru dumitrualex Data 17 decembrie 2016 11:49:44
Problema Prefix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#define nmax 1000000+5
using namespace std;

char a[nmax];
int n;

int largest_period(int d)
{
    int i, j;

    for (i = 0; i < d; i++)
        if (a[i] != a[i+d])
            return 0;

    int max_size = d*2;

    for (j = d*2; j+d <= n; j+= d) {

        for (i = 0; i < d; i++)
            if (a[i] != a[j+i])
                return max_size;

        max_size = j + d;
    }

    return max_size;
}
int main()
{
    freopen("prefix.in", "r", stdin);
    freopen("prefix.out", "w", stdout);

    int t;
    scanf("%d", &t);

    for (int i = 0; i < t; i++) {
        scanf("\n");
        scanf("%s", a);

        n = strlen(a);

        int x = largest_period(1);
        for (int d = 2; d <= n / 2; d++)
        {
            int y = largest_period(d);

            if (y > x)
                x = y;
        }

        printf("%d\n", x);

    }
    return 0;
}