CSES - Datatähti 2025 alku - Results
Submission details
Task:Kortit II
Sender:AH
Submission time:2024-10-30 17:58:26 +0200
Language:C++ (C++20)
Status:READY
Result:3
Feedback
groupverdictscore
#1ACCEPTED3
#20
#30
#40
#50
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3, 4, 5details
#20.00 s2, 3, 4, 5details
#30.00 s3, 4, 5details
#40.00 s4, 5details
#50.00 s5details
#60.00 s5details

Code

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;

#define F first
#define S second
#define PB push_back
#define MP make_pair
#define FOR(i,a,b) for (ll i = a; i < b; i++)

ll pow(ll n) {
    ll f=1;
    FOR(i,1,n+1) {
        f *= i;
    }
    return f;
}


ll bin(ll n, ll k) {
    ll bin = pow(n)/(pow(k)*pow(n-k));
    return bin;
}

/*ll count(ll n, ll a) {
    vi v;
    ll tc=0, c=0;
    bool no = false;
    FOR(i,0,n) {
        v.push_back(i);
    }
    do {
        FOR(i,0,n) {
            if (v[i]==i) {
                no = true;
                break;
            }
            if (v[i]>i) {
                tc++;
            }
        }
        if (tc==a && !no) {
            c++;
        }
        no = false;
        tc=0;
    } while (next_permutation(v.begin(), v.end()));
    return c;
}*/

void f() {
    ll n, a, b, t, tm, jm, vm, m=1e9+7;
    vector<vector<int>> v = {
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 7, 1, 0, 0, 0, 0, 0, 0},
            {0, 1, 21, 21, 1, 0, 0, 0, 0, 0},
            {0, 1, 51, 161, 51, 1, 0, 0, 0, 0},
            {0, 1, 113, 813, 813, 113, 1, 0, 0, 0},
            {0, 1, 239, 3361, 7631, 3361, 239, 1, 0, 0},
            {0, 1, 493, 12421, 53833, 53833, 12421, 493, 1, 0}};
    cin >> n >> a >> b;
    t = n-a-b;
    tm = bin(n, t);
    jm = pow(n);
    vm = v[n-t][a];
    cout << (tm*jm*vm)%(m) << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    FOR(i,0,t) {
        f();
    }
}

Test details

Test 1

Group: 1, 2, 3, 4, 5

Verdict: ACCEPTED

input
54
4 4 0
3 1 3
3 2 2
4 0 4
...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 2

Group: 2, 3, 4, 5

Verdict:

input
284
6 1 0
5 0 2
7 1 5
7 7 5
...

correct output
0
0
35280
0
36720
...

user output
(empty)

Test 3

Group: 3, 4, 5

Verdict:

input
841
19 3 12
19 19 13
19 7 13
20 11 15
...

correct output
40291066
0
0
0
0
...

user output
(empty)

Test 4

Group: 4, 5

Verdict:

input
1000
15 12 6
7 1 6
44 4 26
6 6 5
...

correct output
0
5040
494558320
0
340694548
...

user output
(empty)

Test 5

Group: 5

Verdict:

input
1000
892 638 599
966 429 655
1353 576 1140
1403 381 910
...

correct output
0
0
0
249098285
0
...

user output
(empty)

Test 6

Group: 5

Verdict:

input
1000
2000 1107 508
2000 1372 249
2000 588 65
2000 1739 78
...

correct output
750840601
678722180
744501884
159164549
868115056
...

user output
(empty)