QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#64135#5119. Perfect WordDaBenZhongXiaSongKuaiDi#WA 5ms6460kbC++141.1kb2022-11-24 09:44:532022-11-24 09:44:54

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-11-24 09:44:54]
  • Judged
  • Verdict: WA
  • Time: 5ms
  • Memory: 6460kb
  • [2022-11-24 09:44:53]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = (int)1e5+5;
const int bs = 37, p1 = 998244353, p2 = (int)1e9+7;
int n,len[maxn],lst[maxn]; string s[maxn]; unordered_map<ll,int> mp;
bool cmp(int X,int Y){return len[X]<len[Y];}
ll get_hs(int idx,int l,int r){
	ll hs1 = 0, hs2 = 0;
	for(int al=l;al<=r;al++){
		hs1 = hs1*bs%p1, hs2 = hs2*bs%p2;
		hs1 = (hs1+s[idx][al]-'a')%p1,
		hs2 = (hs2+s[idx][al]-'a')%p2;
	}
	return (hs1<<32)|hs2;
}
int main(){
	ios::sync_with_stdio(false); cin.tie(0), cout.tie(0);
	cin >> n;
	for(int al=1;al<=n;al++) cin >> s[al], len[al] = s[al].length(), lst[al] = al;
	sort(lst+1,lst+n+1,cmp);
	int ans = 0;
	for(int al=1;al<=n;al++)
		if(len[lst[al]]==1) mp.insert(make_pair(get_hs(lst[al],0,len[lst[al]]-1),1)), ans = 1;
		else{
			ll hs1 = get_hs(lst[al],0,len[lst[al]]-2);
			ll hs2 = get_hs(lst[al],1,len[lst[al]]-1);
			if(mp.count(hs1) && mp.count(hs2))
				mp.insert(make_pair(get_hs(lst[al],0,len[lst[al]]-1),1)), ans = len[lst[al]];
		} 
	cout << ans << endl;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 6420kb

input:

4
a
t
b
ab

output:

2

result:

ok 1 number(s): "2"

Test #2:

score: 0
Accepted
time: 0ms
memory: 6452kb

input:

310
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaa...

output:

300

result:

ok 1 number(s): "300"

Test #3:

score: -100
Wrong Answer
time: 5ms
memory: 6460kb

input:

4347
bbaaaab
aabab
bbaaaaababaaaba
aababaaaabbbabababaaaba
ababbabbbbbabbbabbab
bbbbbbb
bbbabbbabbabaab
aabbbbabbbbaa
aabaaabbbbbabaaababaa
aaabababba
aaababbaabab
abbababbabbab
bababaabbbbaaa
aaaaaabaaaababaa
ababaababba
babaababbbababaaab
bb
abbbaaaababa
b
ab
aaabbbbb
abaabaaaaababbbab
bbaaabaab
b...

output:

16

result:

wrong answer 1st numbers differ - expected: '10', found: '16'