Cod sursa(job #3217251)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 21 martie 2024 23:05:29
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <unordered_map>
using namespace std;
ifstream fin ("abc2.in");
ofstream fout("abc2.out");
int n,j,sol,i,lps[21];
unordered_map <string,bool> M;
string text,pattern;
int main()
{
    fin>>text;
    while(fin>>pattern)
    {
        if(M[pattern])
            continue;
        M[pattern]=1;
        j=0;
        memset(lps,0,sizeof(lps));
        for(i=1;i<pattern.size();i++)
        {
            while(pattern[j]!=pattern[i]&&j>0)
                j=lps[j-1];
            if(pattern[j]==pattern[i])
                j++;
            lps[i]=j;
        }
        j=0;
        for(i=0;i<text.size();i++)
        {
            while(text[i]!=pattern[j]&&j>0)
                j=lps[j-1];
            if(pattern[j]==text[i])
                j++;
            if(j==pattern.size())
                sol++;
        }
    }
    fout<<sol;
    return 0;
}