Cod sursa(job #1726903)

Utilizator ade_tomiEnache Adelina ade_tomi Data 9 iulie 2016 13:37:52
Problema Abc2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb

#include<iostream>
#include<cstring>
#include<vector>
#include<fstream>
#define MOD 66013
using namespace std;
typedef unsigned int uint;


string S,s;
vector<int>v[MOD+3];


uint verif(uint x)
{
    int i;

    uint k=x%MOD;
    for(i=0;i<v[k].size();i++)
        if(v[k][i]==x)
            return 1;
    return 0;
}

void add(uint x)
{

    uint k=x%MOD;
    if(verif(x)==0)

        v[k].push_back(x);
}

uint put[25],sum,i,n,h,sol;
int main()
{
    ifstream cin("abc2.in");
    ofstream cout("abc2.out");
    cin>>S;
    put[0]=1;
    for(i=1;i<20;i++)
        put[i]=put[i-1]*3;
    while(cin>>s)
    {
        n=s.size();

        uint sum=0;

        for(i=0;i<n;i++)
        {
            sum+=(s[i]-'a')*put[i];
        }


        add(sum);

    }


    uint h=0;
    for(i=0;i<n;i++)
    {

        h=h+(S[i]-'a')*put[i];

    }
      if(verif(h)==1){
            sol++;
         //   cout<<"1";
      }
    for(i=n;i<S.size();i++)
    {
        h/=3;
        h+=(S[i]-'a')*put[n-1];
        if(verif(h)==1){
            sol++;
          //  cout<<i-n+1;
        }
    }
    cout<<sol;
    return 0;
}