Cod sursa(job #2388788)

Utilizator NeredesinI am not real Neredesin Data 26 martie 2019 14:14:41
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <algorithm>
#include <fstream>
#include <cstring>
#include <vector>

#define LMAX 10010000
#define MOD 66013
#define LCUV 23

using namespace std;

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

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

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

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

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

  do {
    nr = 0;
    p = 1;
    ok = 0;

    for(int i = 0; i < l; i++) {
      nr += p * (cuv[i] - 'a');
        p *= 3;
    }

    for (it = v[nr % MOD].begin();it!=v[nr%MOD].end();it++)
      if (*it==nr)ok=1;
        if (ok==0)
          v[nr%MOD].push_back(nr);
  }

  while (in.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++;
        break;
      }

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

  out << nr_poz << '\n';

  in.close();
  out.close();
}