Submission #994064

# Submission time Handle Problem Language Result Execution time Memory
994064 2024-06-07T05:25:18 Z vjudge1 Rima (COCI17_rima) C++17
56 / 140
1000 ms 102136 KB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int h = 727, mod = 1e9 + 7;
const int h1 = 7369, mod1 = 998244353;
const int enc = 8369, mod2 = 1LL<<36;
const int M = 3e6;

int pw[M],pw1[M];

inline int en(int has,int has1)
{
	return (has1*enc+has)%mod2;
}

signed main()
{
	pw[0]=pw1[0]=1;
	for (int i=1;i<M;i++)
		pw[i]=pw[i-1]*h%mod,pw1[i]=pw1[i-1]*h1%mod1;
	int n;
	cin>>n;
	map<int,vector<string>> mp;
	for (int i=0;i<n;i++)
	{
		string s;
		cin>>s;
		mp[s.size()].push_back(s);
	}
	vector<string> v;
	for (auto i:mp)
		for (auto j:i.second)
			v.push_back(j);
	reverse(v.begin(),v.end());
	map<int,int> ans;
	while (!v.empty())
	{
		string s=v.back();
		v.pop_back();
		int hs=0,hs1=0,m=s.size();
		for (int i=1;i<m;i++)
		{
			hs=hs*h+s[i],hs1=hs1*h1+s[i];
			hs%=mod,hs1%=mod1;
		}
		int mx;
		if (ans.find(en(hs,hs1))!=ans.end())
			mx=ans[en(hs,hs1)]+1;
		else
			mx=1;
		for (int c='a';c<='z';c++)
		{
			pair<int,int> p={hs,hs1};
			p.first+=pw[m-1]*c%mod;
			p.second+=pw1[m-1]*c%mod1;
			p.first%=mod,p.second%=mod1;
			if (ans.find(en(p.first,p.second))!=ans.end())
				mx=max(mx,ans[en(p.first,p.second)]+1);
		}
		for (int c='a';c<='z';c++)
		{
			pair<int,int> p={hs,hs1};
			p.first+=pw[m-1]*c%mod;
			p.second+=pw1[m-1]*c%mod1;
			p.first%=mod,p.second%=mod1;
			if (ans.find(en(p.first,p.second))!=ans.end() or c==s[0])
				ans[en(p.first,p.second)]=mx;
		}
	}
	int res=0;
	for (auto i:ans)
		res=max(res,i.second);
	cout<<res<<endl;
	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 23 ms 47192 KB Output is correct
2 Correct 22 ms 47184 KB Output is correct
3 Correct 21 ms 47188 KB Output is correct
4 Execution timed out 1077 ms 102136 KB Time limit exceeded
5 Correct 86 ms 53588 KB Output is correct
6 Incorrect 39 ms 49412 KB Output isn't correct
7 Incorrect 36 ms 49104 KB Output isn't correct
8 Incorrect 34 ms 48884 KB Output isn't correct
9 Incorrect 133 ms 55444 KB Output isn't correct
10 Incorrect 35 ms 48840 KB Output isn't correct