Cod sursa(job #2419201)

Utilizator potirasUAIC Borcan Andreea potiras Data 7 mai 2019 19:36:02
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <bits/stdc++.h>

#define dbg(x) cerr<<#x": "<<x<<"\n"
#define dbg_p(x) cerr<<#x": "<<x.first<<","<<x.second<<"\n"
#define dbg_v(x, n) do{cerr<<#x"[]: ";for(int _=0;_<n;++_)cerr<<x[_]<<" ";cerr<<'\n';}while(0)
#define dbg_ok cerr<<"OK!\n"

#define DMAX 10000020
#define NMAX 137
#define MMAX 1

using namespace std;

int n, k,  y,m,i,j,ans;
unsigned long long x,has[DMAX],h;
bool f[DMAX];
string a,b;

int main()
{
	ifstream cin ("abc2.in");
	ofstream cout("abc2.out");
	ios_base::sync_with_stdio(false);
	cin>>b>>a;
	h=1;

	n=a.size();
	int cn=n;
	n--;
	//dbg(x);
	for(i=1;i<cn;i++)
	{
		h*=NMAX;
	}
	y=1;
	for (int i = cn-1;i>=0;i--)
	{
		x+=((unsigned long long)a[i]*y);
		has[0]+=(unsigned long long)b[i]*y;
		y*=NMAX;
		// dbg(x);
		// dbg(n);
	}
	j=0;
	int l=1;
	for (int i = cn; i < b.size(); ++i)
	{
		has[l]=(has[l-1] - ((unsigned long long) b[j])*h)*NMAX+(unsigned long long)b[i];
		//dbg(b[j]*h[cn]);
		// dbg(has[l]);
		l++;
		j++;
	}
	for(i=0;i<l;i++)
	{
		//dbg(i);
		//dbg(has[i]);
		if(has[i]==x )
		{
			ans++;
			f[i]=1;
		}
	}
	// dbg(ans);
	while(cin>>a)
	{
		n=a.size();
		int cn=n;
		n--;
		//dbg(x);
		x=0;
		y=1;
		for (int i = cn-1;i>=0;i--)
		{
			x+=((unsigned long long)a[i]*y);
			y*=NMAX;
			// dbg(x);
			// dbg(n);
		}
		n=0;
		// dbg(x);
		// dbg(ans);
		for(i=0;i<l;i++)
		{
			//dbg(i);
			//dbg(has[i]);
			if(has[i]==x && f[i]!=1)
			{
				ans++;
				f[i]=1;

			}
		}
	}
	cout<<ans;
}