| Task: | Lähetit |
| Sender: | Henrik Lievonen |
| Submission time: | 2015-07-19 22:11:56 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | 12 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 12 |
| #2 | WRONG ANSWER | 0 |
| #3 | TIME LIMIT EXCEEDED | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.08 s | 1 | details |
| #2 | ACCEPTED | 0.09 s | 1 | details |
| #3 | ACCEPTED | 0.08 s | 1 | details |
| #4 | ACCEPTED | 0.09 s | 1 | details |
| #5 | ACCEPTED | 0.08 s | 1 | details |
| #6 | WRONG ANSWER | 0.09 s | 2 | details |
| #7 | WRONG ANSWER | 0.12 s | 2 | details |
| #8 | WRONG ANSWER | 0.22 s | 2 | details |
| #9 | WRONG ANSWER | 0.34 s | 2 | details |
| #10 | ACCEPTED | 0.41 s | 2 | details |
| #11 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #12 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #13 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #14 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #15 | TIME LIMIT EXCEEDED | -- | 3 | details |
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() {
/*cout << "\t";
for (int x = 1; x < 10; x++)
cout << x << "\t";
for (int y = 0; y < 10; y++) {
cout << y << "|\t";
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: ACCEPTED
| input |
|---|
| 5 2 |
| correct output |
|---|
| 240 |
| user output |
|---|
| 240 |
Test 2
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 5 4 |
| correct output |
|---|
| 2728 |
| user output |
|---|
| 2728 |
Test 3
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 5 6 |
| correct output |
|---|
| 1960 |
| user output |
|---|
| 1960 |
Test 4
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 5 8 |
| correct output |
|---|
| 32 |
| user output |
|---|
| 32 |
Test 5
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 5 10 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 6
Group: 2
Verdict: WRONG ANSWER
| input |
|---|
| 10 4 |
| correct output |
|---|
| 1809464 |
| user output |
|---|
| 1870488 |
Test 7
Group: 2
Verdict: WRONG ANSWER
| input |
|---|
| 10 8 |
| correct output |
|---|
| 209594075 |
| user output |
|---|
| 398611547 |
Test 8
Group: 2
Verdict: WRONG ANSWER
| input |
|---|
| 10 12 |
| correct output |
|---|
| 811277399 |
| user output |
|---|
| 134948425 |
Test 9
Group: 2
Verdict: WRONG ANSWER
| input |
|---|
| 10 16 |
| correct output |
|---|
| 17275136 |
| user output |
|---|
| 18920192 |
Test 10
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 10 20 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 11
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 40 |
| correct output |
|---|
| 126883191 |
| user output |
|---|
| (empty) |
Test 12
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 80 |
| correct output |
|---|
| 785497039 |
| user output |
|---|
| (empty) |
Test 13
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 120 |
| correct output |
|---|
| 324216296 |
| user output |
|---|
| (empty) |
Test 14
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 160 |
| correct output |
|---|
| 895190039 |
| user output |
|---|
| (empty) |
Test 15
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100 200 |
| correct output |
|---|
| 0 |
| user output |
|---|
| (empty) |
