Cod sursa(job #2225809)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 28 iulie 2018 12:57:28
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <cstdio>
#include <vector>
#define MOD 107547

using namespace std;
char s[10000001],cc[25];
vector <long long> v[MOD];
int elem;
int main()
{
    FILE *fin=fopen ("abc2.in","r");
    FILE *fout=fopen ("abc2.out","w");
    int i,l,x,j;
    long long nr,p3,sol;
    char c;
    fgets (s,10000001,fin);
    elem=0;
    while (fgets (cc,25,fin)){
        nr=0;
        i=0;
        while (cc[i]!='\n'){
            nr=nr*3+(cc[i]-'a');
            i++;
        }
        v[nr%MOD].push_back(nr);
    }
    l=i;
    p3=1;
    for (i=1;i<l;i++)
        p3*=3;
    nr=0;
    sol=0;
    for (i=0;i<l;i++)
        nr=nr*3+(s[i]-'a');
    x=nr%MOD;
    for (i=0;i<v[x].size();i++){
        if (v[x][i]==nr){
            sol++;
            break;
        }
    }
    for (i=l;s[i]!='\n';i++){
        nr=nr-p3*(s[i-l]-'a');
        nr=nr*3+(s[i]-'a');
        x=nr%MOD;
        for (j=0;j<v[x].size();j++){
            if (v[x][j]==nr){
                sol++;
                break;
            }
        }
    }
    fprintf (fout,"%lld",sol);
    return 0;
}