Cod sursa(job #2225795)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 28 iulie 2018 12:08:03
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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;
    fgets (s,10000000,fin);
    fgets (cc,25,fin);
    while (1){
        nr=0;
        i=0;
        while (cc[i]!='\n'){
            nr=nr*3+(cc[i]-'a');
            i++;
        }
        l=i;
        m[nr]=1; // exista cuvantul nr
        c=fgetc (fin);
        fgets (cc+1,25,fin);
        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]=='\n')
            break;
        nr=nr*3+(s[i]-'a');
    }
    sol+=m[nr];
    for (i=l;s[i]!='\n';i++){
        nr=nr-p3*(s[i-l]-'a');
        nr=nr*3+(s[i]-'a');
        sol+=m[nr];
    }
    fprintf (fout,"%lld",sol);
    return 0;
}