Mai intai trebuie sa te autentifici.
Cod sursa(job #2042933)
Utilizator | 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)));
}
}