Cod sursa(job #3122862)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 20 aprilie 2023 21:09:22
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cassert>
#include <cmath>
#include <stack>
#include <set>
#include <functional>
#include <queue>
#include <cctype>
using namespace std;
const int64_t mod=999983;
ifstream cin("abc2.in");
ofstream cout("abc2.out");
#define int int64_t
void solve()
{
	string s;
	cin>>s;
	string aux;
	int m=0;
	vector<vector<int64_t>>cash(mod);
    while(cin>>aux)
    {
        m=int64_t(aux.size());
        int64_t x=0;
        for(auto &c:aux)
        {
            x*=3LL;
            x+=(c-'a');
        }
        cash[x%mod].push_back(x);
        if(aux=="aaaa")break;
    }
    int64_t pw=1;
    for(int i=1;i<m;i++)
    {
        pw*=3LL;
    }
    int sol=0;
    for(int i=0,x=0;i<int(s.size());i++)
    {
        if(i>=m)
        {
            x-=(s[i-m]-'a')*pw;
        }
        x*=3LL;
        x+=(s[i]-'a');
        sol+=(count(cash[x%mod].begin(),cash[x%mod].end(),x)>0);
    }
    cout<<sol<<'\n';
}
main()
{
    auto sol=[&](int x)
    {
        if(x)return "YES";
        return "NO";
    };
    int tt=1;
    //cin>>tt;
    while(tt--)solve();
}