Cod sursa(job #1740842)

Utilizator Lungu007Lungu Ionut Lungu007 Data 12 august 2016 13:03:14
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#define MOD 666013
#define MOD1 100007
#define NMAX  1000001
#define CMAX 21
#define DMAX 50001
using namespace std;

ifstream in("abc2.in");
ofstream out("abc2.out");

char s[NMAX];
char q[CMAX];
unordered_map<int,int> m;
int x,a[NMAX],d[DMAX],d1[NMAX],c,n,p,cuv,p1=1,p2=1,h1,h2;

int pow(int x,int n)
{
    int rez = 1;
    while(n>0)
    {
        if(n%2==1)
        {
            n--;
            rez = rez*x%MOD;
        }
        n = n/2;
        x = x*x%MOD;
    }
    return rez%MOD;
}

int main()
{
    in >> s;

    for(n=0;s[n]!='\0';n++)
    {
        a[n] = s[n]-'a'+1;
    }

    while(in >> q)
    {
        for(cuv=0;q[cuv]!='\0';cuv++)
        {
            //cout << p << " ";
            d[c] = (d[c]*10+(q[cuv]-'a'+1))%MOD;

        }
        c++;
    }
    for(int i=0;i<cuv;i++)
    {
        h1 = (h1*10 + a[i])%MOD;
        p1 = (10*p1)%MOD;
        m[h1]++;

    }
    p1 /=10;
    m[h1] = 1;

    for(int i=cuv;i<n;i++)
    {
        h1 = ((h1-(h1/p1)*p1)*10+ a[i])%MOD;

        m[h1]++;

    }
    int contor=0;
    for(int i=0;i<c;i++)
    {
      //  cout <<m[d[i]] << " ";
        if(m[d[i]]>0)
        {
            contor+=m[d[i]];
            m[d[i]] =0;
        }
    }
    out << contor;
    return 0;
}