Mai intai trebuie sa te autentifici.

Cod sursa(job #1471645)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 14 august 2015 19:19:34
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <cstring>

#define DIM 1000007

using namespace std;
FILE *fin, *fout;
char s[DIM];
int ans, t;

void init()
{
    memset(s, 0, sizeof(s));
    ans = 0;
}
void citire()
{
    scanf("%s", s+1);
}
void solve()
{
    int l = 1, tmp[2], sze = strlen(s + 1), p;
    tmp[0] = tmp[1] = 0;
    s[0] = '[';
    for(int i = 2; i<= sze; ++i)
    {
        p = i&1;
        if(s[i] == s[i - l] && (i == sze || s[i+1] == s[i+1 - l] || tmp[!p] +1 == l)) tmp[p] = tmp[!p] + 1;
        else
        {
            tmp[p] = 0;
            l = i;
        }
        if(tmp[p] == l)
        {
            tmp[p] = 0;
            ans = i;
        }
    }
}
void afisare()
{
    printf("%d\n", ans);
}

int main()
{
    fin = freopen("prefix.in", "r", stdin);
    fout = freopen("prefix.out", "w", stdout);
    scanf("%d", &t);
    for(int i = 1; i<= t; ++i)
    {
        init();
        citire();
        solve();
        afisare();
    }
    fclose(fin);
    fclose(fout);
    return 0;
}