Cod sursă (job #530910)

Utilizator avatar stef2003 Bud Stefan stef2003 IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp | 0,57 kb
Rundă Arhiva de probleme Status evaluat
Dată 25 feb. 2020 21:45:49 Scor 100
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

char s[500001];
int pref[500001];
int main() {
  FILE *fin, *fout;
  int i, lc, n;
  fin=fopen("bart.in","r");
  fout=fopen("bart.out","w");
  fgets(s+1,500001,fin);
  n=strlen(s+1);
  for(i=2;i<n;i++) {
    if(i!=0)
      lc=pref[i-1];
    else
      lc=0;
    while(lc>0 && s[lc+1]!=s[i])
      lc=pref[lc];
    if(s[lc+1]==s[i])
      lc++;
    pref[i]=lc;
  }
  for(i=1;i<=n-pref[n-1]-1;i++)
    fprintf(fout, "%c",s[i]);
  fclose( fin );
  fclose( fout );
  return 0;
}