Pagini recente »
aht2
|
Cod sursă (job #626444)
|
Cod sursă (job #759536)
|
Cod sursă (job #819766)
|
Cod sursă (job #530271)
Cod sursă (job
#530271)
#include<fstream>
#include<cstring>
using namespace std;
ifstream cin("bart.in");
ofstream cout("bart.out");
int pi[500010];
char s[500010];
void fpi(int n){
int now=0;
for(int i=2;i<=n;i++){
while(s[now+1]!=s[i]&&now>0)
now=pi[now];
if(s[now+1]==s[i])
now++;
pi[i]=now;
}
}
int main () {
int n;
cin.getline(s+1,500010);
s[0]='#';
n=strlen(s+1);
fpi(n);
int panala=n-pi[n];///merge si pe caz particular cand ultima parte nu e incompleta
for(int i=1;i<=panala;i++)
cout<<s[i];
return 0;
}