Cod sursă (job #232451)

Utilizator avatar anav23 Ana Vasiliu anav23 IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp | 0,54 kb
Rundă Arhiva de probleme Status evaluat
Dată 8 apr. 2016 09:27:11 Scor 100
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;

char sir[500005];
int n,ps[500005];

void findPattern() {
    int k=0;
    for(int i=2;i<=n;++i) {
        while(k>0&&sir[k+1]!=sir[i])
            k=ps[k];
        if(sir[k+1]==sir[i])
            ++k;
        ps[i]=k;
    }
}

int main()
{
    ifstream fin("bart.in");
    ofstream fout("bart.out");
    fin.get(sir+1,500005);
    n=strlen(sir+1);
    findPattern();
    for(int i=1;i<=n-ps[n];++i)
        fout<<sir[i];
    return 0;
}