| Task: | Merkkijonot |
| Sender: | Gomhog |
| Submission time: | 2025-11-09 11:53:22 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 18 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 18 |
| #2 | TIME LIMIT EXCEEDED | 0 |
| #3 | TIME LIMIT EXCEEDED | 0 |
| #4 | TIME LIMIT EXCEEDED | 0 |
| #5 | TIME LIMIT EXCEEDED | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #2 | ACCEPTED | 0.07 s | 2, 3, 4, 5 | details |
| #3 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #5 | ACCEPTED | 0.01 s | 1, 2, 3, 4, 5 | details |
| #6 | ACCEPTED | 0.01 s | 1, 2, 3, 4, 5 | details |
| #7 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #8 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #9 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #10 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5 | details |
| #11 | ACCEPTED | 0.01 s | 2, 3, 4, 5 | details |
| #12 | ACCEPTED | 0.01 s | 2, 3, 4, 5 | details |
| #13 | TIME LIMIT EXCEEDED | -- | 2, 3, 4, 5 | details |
| #14 | TIME LIMIT EXCEEDED | -- | 2, 3, 4, 5 | details |
| #15 | ACCEPTED | 0.00 s | 2, 3, 4, 5 | details |
| #16 | ACCEPTED | 0.04 s | 2, 3, 4, 5 | details |
| #17 | ACCEPTED | 0.01 s | 2, 3, 4, 5 | details |
| #18 | ACCEPTED | 0.01 s | 2, 3, 4, 5 | details |
| #19 | ACCEPTED | 0.01 s | 3, 4, 5 | details |
| #20 | TIME LIMIT EXCEEDED | -- | 3, 4, 5 | details |
| #21 | TIME LIMIT EXCEEDED | -- | 3, 4, 5 | details |
| #22 | TIME LIMIT EXCEEDED | -- | 3, 4, 5 | details |
| #23 | ACCEPTED | 0.00 s | 3, 4, 5 | details |
| #24 | WRONG ANSWER | 0.07 s | 3, 4, 5 | details |
| #25 | ACCEPTED | 0.01 s | 3, 4, 5 | details |
| #26 | ACCEPTED | 0.01 s | 3, 4, 5 | details |
| #27 | ACCEPTED | 0.01 s | 4, 5 | details |
| #28 | ACCEPTED | 0.02 s | 4, 5 | details |
| #29 | TIME LIMIT EXCEEDED | -- | 4, 5 | details |
| #30 | TIME LIMIT EXCEEDED | -- | 4, 5 | details |
| #31 | ACCEPTED | 0.00 s | 4, 5 | details |
| #32 | WRONG ANSWER | 0.12 s | 4, 5 | details |
| #33 | ACCEPTED | 0.02 s | 4, 5 | details |
| #34 | ACCEPTED | 0.01 s | 4, 5 | details |
| #35 | ACCEPTED | 0.01 s | 5 | details |
| #36 | ACCEPTED | 0.07 s | 5 | details |
| #37 | TIME LIMIT EXCEEDED | -- | 5 | details |
| #38 | TIME LIMIT EXCEEDED | -- | 5 | details |
| #39 | ACCEPTED | 0.01 s | 5 | details |
| #40 | WRONG ANSWER | 0.17 s | 5 | details |
| #41 | ACCEPTED | 0.03 s | 5 | details |
| #42 | ACCEPTED | 0.01 s | 5 | details |
Code
#include <bits/stdc++.h>
#define F first
#define S second
#define X real()
#define Y imag()
using namespace std;
typedef long long ll;
typedef long double ld;
const ll M = 1000000007;
ll mat[3550][3550];
ll ret[3550];
ll tmp[3550][3550];
ll tmp2[3550];
bool accept[3550];
map<char,int> trie[3010];
set<int> prefpos[3010];
vector<char> made[3010];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
string s;
cin>>s;
for (int i=0;i<m-1;i++) {
mat[i+1][i]=1;
map<char,int> tar;
for (int j=i;j>=0;j--) {
bool pos=true;
for (int k=0;j+k<i;k++) {
if (s[k]!=s[j+k+1]) pos=false;
}
if (pos) {
if (s[i+1]!=s[i-j]) tar[s[i-j]]=i-j;
}
}
for (auto x : tar) {
mat[x.S][i]=1;
}
}
accept[m-1]=true;
int newest=0;
for (int i=m-1;i>0;i--) {
int nod=0;
for (int j=i;j<m;j++) {
if (trie[nod].count(s[j])==0) {
trie[nod][s[j]]=++newest;
for (char c : made[nod]) made[newest].push_back(c);
made[newest].push_back(s[j]);
}
if (s[j]==s[0]) prefpos[trie[nod][s[j]]].insert(0);
for (int r : prefpos[nod]) {
if (s[j]==s[r+1]) prefpos[trie[nod][s[j]]].insert(r+1);
}
nod=trie[nod][s[j]];
if (accept[m-1+nod]) break;
}
accept[m-1+nod]=true;
}
int si=newest+1;
for (int i=0;i<si;i++) {
if (accept[m-1+i]) {
for (auto x : trie[0]) {
mat[m-1+x.S][m-1+i]=1;
}
if (trie[0].count(s[0])==0) mat[0][m-1+i]=1;
} else {
for (auto x : trie[i]) {
mat[m-1+x.S][m-1+i]=1;
}
map<char,int> resets;
int kk=made[i].size();
for (int k=0;k<=kk;k++) {
bool ok=true;
for (int j=0;j<k;j++) {
if (s[j]!=made[i][kk-(k-j)]) ok=false;
}
if (ok && trie[i].count(s[k])==0) resets[s[k]]=k;
}
for (auto x : resets) {
mat[x.S][m-1+i]=1;
}
}
}
/* for (int i=0;i<si;i++) {
if (trie[i].count(s[0])==0) trie[i][s[0]]=-(m-1);
for (int x : prefpos[i]) {
if (x<m-1 && (trie[i].count(s[x+1])==0 || trie[i][s[x+1]] <=0)) trie[i][s[x-1]]=-(m-1)+x+1;
}
}
for (int i=0;i<si;i++) {
if (accept[m-1+i]) {
for (auto x : trie[0]) {
mat[m-1+x.S][m-1+i] = 1;
}
} else {
for (auto x : trie[i]) {
mat[m-1+x.S][m-1+i]=1;
}
}
}
*/
int mm = m+si;
/* for (int i=0;i<mm;i++) {
for (int j=0;j<mm;j++) cerr<<mat[i][j]<<" ";
cerr<<endl;
}
*/
ret[0]=1;
int e = n-1;
while (e>0) {
if (e%2==1) {
for (int i=0;i<mm;i++) {
tmp2[i]=0;
for (int j=0;j<mm;j++) {
tmp2[i]+=(mat[i][j]*ret[j])%M;
}
}
for (int i=0;i<mm;i++) ret[i]=tmp2[i]%M;
}
for (int i=0;i<mm;i++) {
for (int j=0;j<mm;j++) {
tmp[i][j]=0;
for (int k=0;k<mm;k++) {
tmp[i][j]+=(mat[i][k]*mat[k][j]);
if (k%10==0) tmp[i][j]%=M;
}
}
}
for (int i=0;i<mm;i++) {
for (int j=0;j<mm;j++) mat[i][j]=tmp[i][j]%M;
}
e/=2;
}
ll res=0;
for (int i=0;i<mm;i++) {
if (accept[i]) res+=ret[i];
}
cout<<res%M<<"\n";
}Test details
Test 1
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1 1 a |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 2
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 20 ssxfykmuzljmwgyvldnu |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 3
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 10 aaaaaaaaaa |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 4
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 10 aabbbaaaab |
| correct output |
|---|
| 1532 |
| user output |
|---|
| 1532 |
Test 5
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 10 aabbacbdca |
| correct output |
|---|
| 1542 |
| user output |
|---|
| 1542 |
Test 6
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 10 ztknszhrby |
| correct output |
|---|
| 3261 |
| user output |
|---|
| 3261 |
Test 7
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 1 a |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 8
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 10 aabbbbbbba |
| correct output |
|---|
| 1689 |
| user output |
|---|
| 1689 |
Test 9
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 8 abxabyab |
| correct output |
|---|
| 8619 |
| user output |
|---|
| 8619 |
Test 10
Group: 1, 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 20 10 ababababab |
| correct output |
|---|
| 509 |
| user output |
|---|
| 509 |
Test 11
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 50 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 12
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 50 bbaaabbbbbabbbbabababababbbaab... |
| correct output |
|---|
| 511493117 |
| user output |
|---|
| 511493117 |
Test 13
Group: 2, 3, 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 50 addabbbbbadddccadcabaacbbbaabd... |
| correct output |
|---|
| 618572722 |
| user output |
|---|
| (empty) |
Test 14
Group: 2, 3, 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 50 rrdumiqrjewanjplbyvkaytbcyzbyl... |
| correct output |
|---|
| 35126431 |
| user output |
|---|
| (empty) |
Test 15
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 1 a |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 16
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 50 aabbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| correct output |
|---|
| 460606355 |
| user output |
|---|
| 460606355 |
Test 17
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 23 aybabtuxaybabtuyaybabtu |
| correct output |
|---|
| 342213037 |
| user output |
|---|
| 342213037 |
Test 18
Group: 2, 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 100 50 ababababababababababababababab... |
| correct output |
|---|
| 775006564 |
| user output |
|---|
| 775006564 |
Test 19
Group: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 50 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 20
Group: 3, 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 50 bbabaabbabbbaaaaaaaaaababaabbb... |
| correct output |
|---|
| 911592620 |
| user output |
|---|
| (empty) |
Test 21
Group: 3, 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 50 cacabdddcbdadabdcbdddbdddbaccb... |
| correct output |
|---|
| 12869296 |
| user output |
|---|
| (empty) |
Test 22
Group: 3, 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 50 tqoyadbshyehwcwaxbtbsqtaswkyet... |
| correct output |
|---|
| 741984969 |
| user output |
|---|
| (empty) |
Test 23
Group: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 1 a |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 24
Group: 3, 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000 50 aabbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| correct output |
|---|
| 599950419 |
| user output |
|---|
| 228677157 |
Feedback: Incorrect character on line 1 col 1: expected "599950419", got "228677157"
Test 25
Group: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 23 aybabtuxaybabtuyaybabtu |
| correct output |
|---|
| 548809016 |
| user output |
|---|
| 548809016 |
Test 26
Group: 3, 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000 50 ababababababababababababababab... |
| correct output |
|---|
| 765799780 |
| user output |
|---|
| 765799780 |
Test 27
Group: 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000000 50 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 28
Group: 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000000 50 bbaababbaaabbabababbaaaaaabbaa... |
| correct output |
|---|
| 514073453 |
| user output |
|---|
| 514073453 |
Test 29
Group: 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000000 50 aabccabbbbabccabcdcdadbcdccdac... |
| correct output |
|---|
| 438094288 |
| user output |
|---|
| (empty) |
Test 30
Group: 4, 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000000 50 yzfzimxrxfukhlkrtaylohyuqkupsn... |
| correct output |
|---|
| 905445077 |
| user output |
|---|
| (empty) |
Test 31
Group: 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000000 1 a |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 32
Group: 4, 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000000 50 aabbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| correct output |
|---|
| 280596224 |
| user output |
|---|
| 912467196 |
Feedback: Incorrect character on line 1 col 1: expected "280596224", got "912467196"
Test 33
Group: 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000000 23 aybabtuxaybabtuyaybabtu |
| correct output |
|---|
| 268144314 |
| user output |
|---|
| 268144314 |
Test 34
Group: 4, 5
Verdict: ACCEPTED
| input |
|---|
| 1000000 50 ababababababababababababababab... |
| correct output |
|---|
| 655244665 |
| user output |
|---|
| 655244665 |
Test 35
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 1000000000 50 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 36
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 1000000000 50 abbbaabbaaaaabbbbabbabbaaaaaba... |
| correct output |
|---|
| 911059863 |
| user output |
|---|
| 911059863 |
Test 37
Group: 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000000000 50 cbabbcaadabbcabbdbdabbbcccbdca... |
| correct output |
|---|
| 994268014 |
| user output |
|---|
| (empty) |
Test 38
Group: 5
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000000000 50 pehyicejeninplaczwezhahmbhwfwi... |
| correct output |
|---|
| 837165971 |
| user output |
|---|
| (empty) |
Test 39
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 1000000000 1 a |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 40
Group: 5
Verdict: WRONG ANSWER
| input |
|---|
| 1000000000 50 aabbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| correct output |
|---|
| 114333489 |
| user output |
|---|
| 613613228 |
Feedback: Incorrect character on line 1 col 1: expected "114333489", got "613613228"
Test 41
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 1000000000 23 aybabtuxaybabtuyaybabtu |
| correct output |
|---|
| 628064772 |
| user output |
|---|
| 628064772 |
Test 42
Group: 5
Verdict: ACCEPTED
| input |
|---|
| 1000000000 50 ababababababababababababababab... |
| correct output |
|---|
| 802946327 |
| user output |
|---|
| 802946327 |
