Cod sursa(job #1500658)

Utilizator nedelcu11Nedelcu Mihai Vlad nedelcu11 Data 12 octombrie 2015 15:29:56
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
typedef unsigned int ui;
char c[100000010],d[25];
ui x;
const unsigned int mod=847129;
int m,i;
bool ok=1;
vector<ui> h[mod+2];
int Cautare(ui x)
{   ui i, r=x%mod;
    for(i=0;i<h[r].size();i++)
        if(h[r][i]==x) return 1;
    return 0;
}
int main()
{   f>>(c+1);
    int n=strlen(c+1);
    while(f>>(d+1))
    {   if(ok==1) {m=strlen(d+1);ok=0;}
        x=0;
        for(i=1;i<=m;i++)
        {   x=x*3+d[i]-'a';
            if(!Cautare(x)) h[x%mod].push_back(x);
        }
    }
    int nr=0;x=0; ui p=1;
    for(i=1;i<=m;i++) {x=x*3+c[i]-'a';p*=3;} p/=3;
    nr+=Cautare(x);
    for(i=m+1;i<=n;i++)
        {   x=(x%p)*3+c[i]-'a';
            nr+=Cautare(x);
        }
    g<<nr<<'\n';
    g.close(); return 0;
}
/*int Cautare(ui x)
{   ui i,r=x%mod;
    for(i=0;i<h[r].size();i++)
        if(h[r][i]==x) return 1;
    return 0;
}*/