CSES - Putka Open 2015 – 1/6 - Results
Submission details
Task:Lähetit
Sender:Henrik Lievonen
Submission time:2015-07-19 22:05:14 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.08 s1details
#20.09 s1details
#30.09 s1details
#40.09 s1details
#50.07 s1details
#60.09 s2details
#70.13 s2details
#80.24 s2details
#90.32 s2details
#100.43 s2details
#11--3details
#12--3details
#13--3details
#14--3details
#15--3details

Code

#include <iostream>
#include <bitset>

using namespace std;

typedef long long int ll;

template<ll N>
struct modnum {
    ll num;
    modnum(ll n) :num(n%N) {}

    modnum &operator+=(const modnum<N> &o) {
        num = (num + o.num) % N;
        return *this;
    }
    modnum &operator*=(const modnum<N> &o) {
        num = (num*o.num) % N;
        return *this;
    }
    modnum operator*(const modnum<N> &o) const {
        modnum<N> a = *this;
        a *= o;
        return a;
    }

    operator ll() const {
        return num;
    }
};
typedef modnum<1000000007> num;
//typedef ll num;

typedef bitset<100> BS;

num testlayer(int n, int k, int l, BS b) {
    if (k <= 0) {
        return 1;
    }
    if (l >= n) {
        return 0;
    }
    
    num r = testlayer(n, k, l + 1, b);

    for (int i = 0; i < 
         l / 2 * 2
         + (n + 1) % 2
         +1;
        i++) {
        if (!b.test(i)) {
            b.set(i);
            r += testlayer(n, k - 1, l + 1, b);
            b.reset(i);
        }
    }

    return r;
}

num testdiag(int n, int k) {
    BS b;
    return testlayer(n, k, 0, b);
}

num test(int n, int k) {
    num r = 0;

    for (int i = 0; i <= k; i++) {
        r += testdiag(n, i)*testdiag(n-1, k - i);
    }

    return r;
}

int main() {
    for (int y = 0; y < 10; y++) {
        for (int x = 1; x < 10; x++) {
            cout << testdiag(x, y) << "\t";
        }
        cout << "\n";
    }
    int n, k;
    cin >> n >> k;
    cout << test(n, k);
}

Test details

Test 1

Group: 1

Verdict:

input
5 2

correct output
240

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 2

Group: 1

Verdict:

input
5 4

correct output
2728

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 3

Group: 1

Verdict:

input
5 6

correct output
1960

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 4

Group: 1

Verdict:

input
5 8

correct output
32

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 5

Group: 1

Verdict:

input
5 10

correct output
0

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 6

Group: 2

Verdict:

input
10 4

correct output
1809464

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 7

Group: 2

Verdict:

input
10 8

correct output
209594075

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 8

Group: 2

Verdict:

input
10 12

correct output
811277399

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 9

Group: 2

Verdict:

input
10 16

correct output
17275136

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 10

Group: 2

Verdict:

input
10 20

correct output
0

user output
1 1 1 1 1 1 1 1 1
1 4 5 12 13 24 25 40 41
0 2 4 38 46 188 206 580 612
0 0 0 32 46 576 674 3840 4196
0 0 0 4 8 652 836 12052 13756
...

Test 11

Group: 3

Verdict:

input
100 40

correct output
126883191

user output
(empty)

Test 12

Group: 3

Verdict:

input
100 80

correct output
785497039

user output
(empty)

Test 13

Group: 3

Verdict:

input
100 120

correct output
324216296

user output
(empty)

Test 14

Group: 3

Verdict:

input
100 160

correct output
895190039

user output
(empty)

Test 15

Group: 3

Verdict:

input
100 200

correct output
0

user output
(empty)