Cod sursa(job #1362900)

Utilizator robertstrecheStreche Robert robertstreche Data 26 februarie 2015 16:33:08
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>

#define LCUV 23
#define LMAX 10000005
#define MOD 666013

using namespace std;

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

bool ok,ap;
char cuv[LCUV],s1[LMAX];
int nr,numar,nr_poz;
long long p=1;

vector <int>v[MOD+5];
vector <int>::iterator it;

int main()
{
   f.getline(s1,LMAX);
   f.getline(cuv,LCUV);

   int l1=strlen(s1);
   int l=strlen(cuv);

   do
    {
       int nr=0,p=1;
       for (int i=0;i<l;i++)
        {
           nr+=p*(cuv[i]-'a');
           p*=3;
        }
        v[nr%MOD].push_back(nr);
    }
   while (f.getline(cuv,LCUV));
   p=1;
   for (int i=0;i<l;i++)
    {
        numar+=(s1[i]-'a')*p;
        p*=3;
    }
   p/=3;
   for (int i=l;i<l1;i++)
    {
        for (it=v[numar%MOD].begin();it!=v[numar%MOD].end();it++)
         if (*it==numar)
            nr_poz++;

        numar=numar/3+p*(s1[i]-'a');
    }
    g<<nr_poz;
}