Cod sursa(job #3122864)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 20 aprilie 2023 21:18:04
Problema Abc2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 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 uint32_t mod=999983;
ifstream cin("abc2.in");
ofstream cout("abc2.out");
void solve()
{
	string s;
	cin>>s;
	string aux;
	int m=0;
	vector<vector<uint32_t>>cash(mod);
    while(cin>>aux)
    {
        m=int(aux.size());
        uint32_t x=0;
        for(auto &c:aux)
        {
            x*=3;
            x+=(c-'a');
        }
        cash[x%mod].push_back(x);
        if(aux=="aaaa")break;
    }
    uint32_t pw=1;
    for(int i=1;i<m;i++)
    {
        pw*=3;
    }
    int sol=0;
    uint32_t x=0;
    for(int i=0;i<int(s.size());i++)
    {
        if(i>=m)
        {
            x-=(s[i-m]-'a')*pw;
        }
        x*=3;
        x+=(s[i]-'a');
        if(i+1>=m)sol+=(count(cash[x%mod].begin(),cash[x%mod].end(),x)>0);
    }
    cout<<sol<<'\n';
}
main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    //cout<<"rez: \n";
    auto sol=[&](int x)
    {
        if(x)return "YES";
        return "NO";
    };
    int tt=1;
    //cin>>tt;
    while(tt--)solve();
}