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)