Cod sursa(job #1652711)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 15 martie 2016 12:19:05
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
#define mod1 66013
#define mod2 56967
#define ab(x) (x-'a'+2)
#define pb push_back
#define mp make_pair
int c1,c2;
char s[10000001],x[22];
vector< vector< pair<int,int> > > h(mod1);
void code(int x,int y,char s[])
{
    c1=c2=1;
    for(int i=x;i<=y;i++)
    {
        c1=(c1*1LL*ab(s[i]))%mod1;
        c2=(c2*1LL*ab(s[i]))%mod2;
    }
}
void ins()
{
    for(int i=0;i<(int)h[c1].size();i++)
    if(h[c1][i].first==c2)
    {
        h[c1][i].second++;
        return;
    }
    h[c1].pb(mp(c2,1));
}
int cnt()
{
    for(int i=0;i<(int)h[c1].size();i++)
    if(h[c1][i].first==c2)
        return h[c1][i].second;
    return 0;
}
int main()
{
    in>>s;
    int n=strlen(s);
    for(int i=0;i<n;i++)
    for(int j=i;j<n;j++)
    {
        code(i,j,s);
        ins();
    }
    int sol=0;
    while(in>>x)
    {
        code(0,strlen(x)-1,x);
        sol+=cnt();
    }
    out<<sol<<'\n';
    return 0;
}