Submission details
Task:Merkkijonot
Sender:jlaire
Submission time:2025-11-08 01:14:04 +0200
Language:C++ (C++17)
Status:READY
Result:57
Feedback
groupverdictscore
#1ACCEPTED18
#2ACCEPTED19
#3ACCEPTED20
#40
#50
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3, 4, 5details
#2ACCEPTED0.00 s2, 3, 4, 5details
#3ACCEPTED0.00 s1, 2, 3, 4, 5details
#4ACCEPTED0.00 s1, 2, 3, 4, 5details
#5ACCEPTED0.00 s1, 2, 3, 4, 5details
#6ACCEPTED0.00 s1, 2, 3, 4, 5details
#7ACCEPTED0.00 s1, 2, 3, 4, 5details
#8ACCEPTED0.00 s1, 2, 3, 4, 5details
#9ACCEPTED0.00 s1, 2, 3, 4, 5details
#10ACCEPTED0.00 s1, 2, 3, 4, 5details
#11ACCEPTED0.00 s2, 3, 4, 5details
#12ACCEPTED0.01 s2, 3, 4, 5details
#13ACCEPTED0.01 s2, 3, 4, 5details
#14ACCEPTED0.01 s2, 3, 4, 5details
#15ACCEPTED0.00 s2, 3, 4, 5details
#16ACCEPTED0.01 s2, 3, 4, 5details
#17ACCEPTED0.01 s2, 3, 4, 5details
#18ACCEPTED0.02 s2, 3, 4, 5details
#19ACCEPTED0.01 s3, 4, 5details
#20ACCEPTED0.15 s3, 4, 5details
#21ACCEPTED0.16 s3, 4, 5details
#22ACCEPTED0.15 s3, 4, 5details
#23ACCEPTED0.00 s3, 4, 5details
#24ACCEPTED0.21 s3, 4, 5details
#25ACCEPTED0.04 s3, 4, 5details
#26ACCEPTED0.11 s3, 4, 5details
#27--4, 5details
#28--4, 5details
#29--4, 5details
#30--4, 5details
#31ACCEPTED0.28 s4, 5details
#32--4, 5details
#33--4, 5details
#34--4, 5details
#350.00 s5details
#360.00 s5details
#370.00 s5details
#380.00 s5details
#390.00 s5details
#400.00 s5details
#410.00 s5details
#420.00 s5details

Code

#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>
using namespace std;
using ll = long long;
using vi = vector<int>;

const ll MOD = 1e9 + 7;

ll go(vector<map<ll,ll>>& dp, ll mask, ll todo, const string& X) {
    if (todo == 0) return mask&1;
    if (dp[todo].count(mask)) return dp[todo][mask];
    ll ans = 0;
    int m = X.size();
    for (char c='a'; c<='z'; c++) {
        ll m2 = 0;
        for (int i=1; i<m; i++) if (X[i]==c) {
            if (mask & (1|(1ll<<(m-i)))) {
                m2 |= 1ll << (m-i-1);
            }
        }
        if (X[0]==c) {
            m2 |= 1ll<<(m-1);
        }
        if (!m2) continue;
        ans += go(dp, m2, todo-1, X);
        ans %= MOD;
    }
    return dp[todo][mask] = ans;
}

ll solve(ll n, string s) {
    vector<map<ll,ll>> dp(n+1);
    return go(dp, 1ll<<s.size(), n, s);
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int n,m; cin>>n>>m;
    string s; cin>>s;
    cout << solve(n, s) << '\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: ACCEPTED

input
100 50
addabbbbbadddccadcabaacbbbaabd...

correct output
618572722

user output
618572722

Test 14

Group: 2, 3, 4, 5

Verdict: ACCEPTED

input
100 50
rrdumiqrjewanjplbyvkaytbcyzbyl...

correct output
35126431

user output
35126431

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: ACCEPTED

input
1000 50
bbabaabbabbbaaaaaaaaaababaabbb...

correct output
911592620

user output
911592620

Test 21

Group: 3, 4, 5

Verdict: ACCEPTED

input
1000 50
cacabdddcbdadabdcbdddbdddbaccb...

correct output
12869296

user output
12869296

Test 22

Group: 3, 4, 5

Verdict: ACCEPTED

input
1000 50
tqoyadbshyehwcwaxbtbsqtaswkyet...

correct output
741984969

user output
741984969

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: ACCEPTED

input
1000 50
aabbbbbbbbbbbbbbbbbbbbbbbbbbbb...

correct output
599950419

user output
599950419

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:

input
1000000 50
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
1

user output
(empty)

Test 28

Group: 4, 5

Verdict:

input
1000000 50
bbaababbaaabbabababbaaaaaabbaa...

correct output
514073453

user output
(empty)

Test 29

Group: 4, 5

Verdict:

input
1000000 50
aabccabbbbabccabcdcdadbcdccdac...

correct output
438094288

user output
(empty)

Test 30

Group: 4, 5

Verdict:

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:

input
1000000 50
aabbbbbbbbbbbbbbbbbbbbbbbbbbbb...

correct output
280596224

user output
(empty)

Test 33

Group: 4, 5

Verdict:

input
1000000 23
aybabtuxaybabtuyaybabtu

correct output
268144314

user output
(empty)

Test 34

Group: 4, 5

Verdict:

input
1000000 50
ababababababababababababababab...

correct output
655244665

user output
(empty)

Test 35

Group: 5

Verdict:

input
1000000000 50
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
1

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 36

Group: 5

Verdict:

input
1000000000 50
abbbaabbaaaaabbbbabbabbaaaaaba...

correct output
911059863

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 37

Group: 5

Verdict:

input
1000000000 50
cbabbcaadabbcabbdbdabbbcccbdca...

correct output
994268014

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 38

Group: 5

Verdict:

input
1000000000 50
pehyicejeninplaczwezhahmbhwfwi...

correct output
837165971

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 39

Group: 5

Verdict:

input
1000000000 1
a

correct output
1

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 40

Group: 5

Verdict:

input
1000000000 50
aabbbbbbbbbbbbbbbbbbbbbbbbbbbb...

correct output
114333489

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 41

Group: 5

Verdict:

input
1000000000 23
aybabtuxaybabtuyaybabtu

correct output
628064772

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 42

Group: 5

Verdict:

input
1000000000 50
ababababababababababababababab...

correct output
802946327

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc