CSES - Datatähti 2023 loppu - Results
Submission details
Task:Merkkijonot
Sender:Anniiiz
Submission time:2023-01-21 13:55:59 +0200
Language:C++17
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED15
#2ACCEPTED55
#3ACCEPTED30
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.00 s1, 2, 3details
#3ACCEPTED0.00 s1, 2, 3details
#4ACCEPTED0.00 s1, 2, 3details
#5ACCEPTED0.00 s2, 3details
#6ACCEPTED0.00 s2, 3details
#7ACCEPTED0.01 s2, 3details
#8ACCEPTED0.02 s2, 3details
#9ACCEPTED0.01 s3details
#10ACCEPTED0.04 s3details
#11ACCEPTED0.09 s3details
#12ACCEPTED0.56 s3details
#13ACCEPTED0.00 s3details
#14ACCEPTED0.00 s3details
#15ACCEPTED0.02 s2, 3details
#16ACCEPTED0.43 s3details

Code

#include <iostream>
#include <map>
#include <vector>
#include <cmath>
using namespace std;
using ll = long long;
vector<string> v;
ll t[1000][2];
ll d[501][501][501][2];
ll M = 1000000007;

ll haku(ll k, ll a, ll b) {
  //cout << k << " " << a << " " << b << " " << t[k][0] << " " <<  t[k][1] << endl;
  ll s = 0;
  if (a == 0 && b == 0) return 1;
  if (a < 0) return 0;
  if (b < 0) return 0;
  if (k == -1) return 0;
  if (d[k][a][b][0]) return d[k][a][b][1];
  if (a >= t[k][0] && b >= t[k][1]) {
    s += haku(k-1, a-t[k][0], b - t[k][1]);
  }
  s += haku(k-1, a, b);
  d[k][a][b][1] = s%M;
  d[k][a][b][0] = 1;
  return s%M;
}

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  ll n;
  string s;
  ll a = 0;
  ll b = 0;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> s;
    v.push_back(s);
    for (auto u : s) {
      if (u == 'a') t[i][0] ++;
      else t[i][1] ++;
    }
    a += t[i][0];
    b += t[i][1];
  }
  if (a %2 != 0) cout << 0 << endl;
  else if (b%2 != 0) cout << 0 << endl;
  else {
    cout << haku(n-1, a/2, b/2)%M << endl;
  }
}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
4
b
bbb
baabaabaa
aab

correct output
0

user output
0

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
8
b
bb
baa
a
...

correct output
12

user output
12

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
16
a
a
a
b
...

correct output
5040

user output
5040

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
16
b
b
a
a
...

correct output
0

user output
0

Test 5

Group: 2, 3

Verdict: ACCEPTED

input
5
bab
bbaaabbabbbaababbbabbabaaabaaa...

correct output
0

user output
0

Test 6

Group: 2, 3

Verdict: ACCEPTED

input
10
baabbbababbbabbaaaabab
aabaaabbbab
aaaabbabab
aab
...

correct output
2

user output
2

Test 7

Group: 2, 3

Verdict: ACCEPTED

input
20
aaaab
baaab
babb
b
...

correct output
4332

user output
4332

Test 8

Group: 2, 3

Verdict: ACCEPTED

input
100
a
b
a
b
...

correct output
433105324

user output
433105324

Test 9

Group: 3

Verdict: ACCEPTED

input
10
aaaabbabbaabbaaaabbbbabaaaabab...

correct output
0

user output
0

Test 10

Group: 3

Verdict: ACCEPTED

input
50
aaba
aaa
abbbbaaba
ababbabbabab
...

correct output
636733956

user output
636733956

Test 11

Group: 3

Verdict: ACCEPTED

input
100
ba
bbbaba
bbba
bb
...

correct output
264657218

user output
264657218

Test 12

Group: 3

Verdict: ACCEPTED

input
500
a
b
b
b
...

correct output
394045503

user output
394045503

Test 13

Group: 3

Verdict: ACCEPTED

input
2
bbbababaaaabbbaaaaaaabbabbbaab...

correct output
2

user output
2

Test 14

Group: 3

Verdict: ACCEPTED

input
1
bbbaaaabaabbbababbbbbbbbabbbaa...

correct output
0

user output
0

Test 15

Group: 2, 3

Verdict: ACCEPTED

input
100
a
a
a
a
...

correct output
538992043

user output
538992043

Test 16

Group: 3

Verdict: ACCEPTED

input
500
a
a
a
a
...

correct output
515561345

user output
515561345