CSES - Datatähti 2025 alku - Results
Submission details
Task:Kortit II
Sender:yoyoyoJ
Submission time:2024-11-10 14:59:45 +0200
Language:Python3 (PyPy3)
Status:READY
Result:3
Feedback
groupverdictscore
#1ACCEPTED3
#20
#30
#40
#50
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1, 2, 3, 4, 5details
#20.62 s2, 3, 4, 5details
#3--3, 4, 5details
#4--4, 5details
#5--5details
#6--5details

Code

#print(10976757120%(1000000000+7))
tt =int(input())
def permutations(elem):
    if len(elem) <= 1:
        yield elem
        return
    for pe in permutations(elem[1:]):
        for i in range(len(elem)):
            yield pe[:i] + elem[0:1] + pe[i:]
def binomial(lst,n):
    if n==0:
        return [[]]
    l=[]
    for i in range(0,len(lst)):
        m=lst[i]
        rt=lst[i+1:]
        for p in binomial(rt,n-1):
            l.append([m]+p)
    return l
def comb(n, k):

    if k < 0 or k > n:
        return 0
    if k == 0 or k == n:
        return 1
 

    k = min(k, n - k)
 
    result = 1
    for i in range(1, k + 1):
        result *= n
        result //= i
        n -= 1
 
    return result
#print(comb(5,3))
rr=0
t=True
su=[]
a2=1
a3=1
while t:
    rr+=1
    n, m ,k = [int(x) for x in input().split()]
    li=[]
    q=[]
    q.append(1)
    for i in range(2,m+k):
        li.append(i)
        q.append(i)
    q.append(m+k)

    #print(li,q)
    am = list(binomial(li,m-1))
    amm = list(binomial(li,m-1))
    #print(am)
    #print(amm)
    amount=0
    amou2=0
    bg2=0
    bg3=0
    b5=0
    if m+k>n:
        su.append(0)
    elif n==1:
        if m==0 and k ==0:
            su.append(1)
        else:
            su.append(0)
    elif k==0 and m == 0:
        for g in range(1, n+1):
            a3 = a3*g
        su.append(a3%(1000000000+7))
        a3=1
        li2 = []
    elif k==0 or m == 0:
        su.append(0)
    elif k==1 and m == 1:
        for g in range(1, n+1):
            a3 = a3*g
            #print(a3)
        su.append(a3*(comb(n, n-m-k))%(1000000000+7))
        a3=1
    elif k==1 or m == 1:
        for g in range(1, m+k+1):
            a2 = a2*g
            #print(g)
        #print(math.comb(n, n-m-k))
        a2 = a2*(comb(n, n-m-k))*(comb(n, n-m-k))
        a2=a2%(1000000000+7)
        su.append(a2)
        a2=1
    else:
        for x in amm:
            x2=list(x)
            x2.insert(0, 1)
            #print(x2)
            il = [i for i in q if i not in x2]
            #print(il)
            for y in am:
                j = list(y)
                j.append(m+k)
                #print(j)
                lis2 = list(permutations(j))
                il2 = list(permutations([i for i in q if i not in j]))
                #print(il2)
                lis = list(x2)
                liss = [i for i in q if i not in lis]
                g=-1
                for u in lis2:
                    g+=1
                    for i in range(0, len(u)):
                        if int(lis[i])<int(u[i]):
                            bg=1
                        else:
                            bg=0
                            #print(0)
                            break
                    #print(lis, u,bg)
                    if bg ==1:
                        for i in il2:
                            for h in range(0,len(i)-1):
                                #print(il[h]>i[h])
                                if il[h]>i[h]:
                                    bg2=1
                                else:
                                    bg2=0
                                    #print(0)
                                    break
                            bg3+=bg2
                            #print(il,i)
                    #print(bg3)
                    amount+=bg*bg3
                    bg3=0
                    amou2=0
        #print(amount)
        for g in range(1, m+k+1):
            amount= amount*g
            #print(g)
        amount=amount*(comb(n, n-m-k))*(comb(n, n-m-k))
        amount=amount%(1000000000+7)
        #print(math.comb(n, n-m-k))
        su.append(amount)
    if rr==tt:
        t=False
for i in su:
    print(int(i))

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
0
0
35280
0
36720
...

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)