Mai intai trebuie sa te autentifici.

Cod sursa(job #2042933)

Utilizator victoreVictor Popa victore Data 19 octombrie 2017 14:23:05
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#include<algorithm>
#include<cstring>

using namespace std;

const int nmax = 5e5+5;

int n;

char s[nmax];
int frecv[600006];

int pow2[100];

inline int gnum(char ch)
{
    return ch-'a';
}

int main()
{
    freopen("string.in","r",stdin);
    freopen("string.out","w",stdout);

    int i,j,lng;

    scanf("%d\n",&n);

    gets(s+1);

    int nr=0,aux;

    pow2[0] = 1;
    for(i=1;i<21;++i)
        pow2[i] = (pow2[i-1]<<1);

    for(lng=1;lng<=19;++lng)
    {
        nr=0;
        for(i=0;i<=600000;++i)
            frecv[i] = 0;
        for(i=1;i<=lng;++i)
            nr = (nr<<1) + gnum(s[i]);

        frecv[nr]++;

        for(;i<=n;++i)
        {
            aux = (gnum(s[i-lng]))*pow2[lng-1];
            nr-=aux;
            nr<<=1;
            nr += gnum(s[i]);
            frecv[nr]++;
        }

        for(i=0; frecv[i] && (i < pow2[lng]) ; ++i);

        if(i < pow2[lng])
            break;
    }

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

    for(j=lng-1; j>=0  ; --j)
    {
        printf("%c",('a' + (pow2[j]&i)));
    }
}