Cod sursa(job #2562985)

Utilizator ivddabDabelea Ioana-Viviana ivddab Data 29 februarie 2020 20:57:24
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <cstring>
#include <vector>
#define NM 10000005
#define ll long long
#define MOD 5099
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
int n,i,sol;
int p3[30];
char s[NM],cuv[30];
vector < int > a[MOD];
int cauta(ll cod){
  int r;
  r=cod%MOD;
  for(int i=0;i<a[r].size();i++)
    if(a[r][i]==cod)
        return 1;
  return 0;
}
int main()
{
    f>>s;
    //g<<s<<' ';
    p3[0]=1;
    for(i=1;i<20;i++) p3[i]=p3[i-1]*3;
    while(f>>cuv){
        //g<<cuv<<' ';
        ll val;
        val=0;
        n=strlen(cuv);
        for(i=0;i<n;i++)
          val+=(p3[i]*(cuv[i]-'a'));
        if(cauta(val)==0)
         a[val%MOD].push_back(val);
    }
    ll val;
    val=0;
    for(i=0;i<n;i++)
        val+=(p3[i]*(cuv[i]-'a'));
    sol+=cauta(val);
    for(int i=n;i<strlen(s);i++){
        val/=3;
        val+=(p3[n-1]*(s[i]-'a'));
        sol+=cauta(val);
    }
    g<<sol<<'\n';
    return 0;
}