Cod sursa(job #1310187)

Utilizator gapdanPopescu George gapdan Data 6 ianuarie 2015 16:06:02
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<cstring>
#include<bitset>
#define NMAX 10000001
#define MOD 335544320
using namespace std;
char s[NMAX],sir[25];
bitset<MOD>H;
int n,m,i,sol;
long long t0,cheie;
int main()
{
    ifstream f("abc2.in");
    ofstream g("abc2.out");
    f.getline(s+1,NMAX);
    n=strlen(s+1);
    while(f.getline(sir+1,25))
    {
        m=strlen(sir+1);
        cheie=0;
        for (i=1;i<=m;++i)
            cheie=(3*cheie+(sir[i]-'a'))%MOD;
        H[cheie]=1;
    }
    int d=1;
    for (i=1;i<=m;++i)
        {
            t0=(3*t0+(s[i]-'a'))%MOD;
            d=d*3;
        }
    d=d/3;
    sol=0;
    for (i=0;i<n-m;i++)
    {
        if (H[t0]==1) ++sol;
        t0=(3*(t0-(s[i+1]-'a')*d)+(s[i+m+1]-'a'))%MOD;
    }
    g<<sol<<"\n";
    return 0;
}