Cod sursa(job #2225793)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 28 iulie 2018 12:03:39
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <map>
using namespace std;
char s[10000001],cc[25];
map<int,int> m;
int main()
{
    FILE *fin=fopen ("abc2.in","r");
    FILE *fout=fopen ("abc2.out","w");
    int i,l;
    long long nr,p3,sol;
    char c;
    fscanf (fin,"%s\n",s);
    fscanf (fin,"%s\n",cc);
    while (1){
        nr=0;
        i=0;
        while (cc[i]!=0){
            nr=nr*3+(cc[i]-'a');
            i++;
        }
        l=i;
        m[nr]=1; // exista cuvantul nr
        c=fgetc (fin);
        fscanf (fin,"%s\n",cc+1);
        if (c!='a' && c!='b' && c!='c')
            break;
        cc[0]=c;
    }
    p3=1;
    for (i=1;i<l;i++)
        p3*=3;
    nr=0;
    sol=0;
    for (i=0;i<l;i++){
        if (!s[i])
            break;
        nr=nr*3+(s[i]-'a');
    }
    if (m[nr])
        sol++;
    for (i=l;s[i]!=0;i++){
        nr=nr-p3*(s[i-l]-'a');
        nr=nr*3+(s[i]-'a');
        if (m[nr])
            sol++;
    }
    fprintf (fout,"%lld",sol);
    return 0;
}