Cod sursa(job #1362863)

Utilizator robertstrecheStreche Robert robertstreche Data 26 februarie 2015 16:08:50
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 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,p=1,nr_poz;

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

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

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

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

       if (f.get(cuv,LCUV))ok=1;
       f.get();
       p=1;numar=0;l=strlen(cuv);
       for (int i=0;i<l;i++)
        {
           numar+=(cuv[i]-'a')*p;
           p*=4;
        }
    }
    while (ok);
    g<<nr_poz;
}