1954D - Colored Balls - CodeForces Solution


combinatorics dp greedy math sortings

Please click on ads to support us..

Python Code:

from math import ceil
MOD = 998244353
N = 5000

n = int(input())
a = [int(x) for x in input().split()]

a.sort()


dp = [0] * (N + 1)

ans = 0
dp[0] = 1
for i in range(n):
    for j in range(N - a[i], - 1, -1):
        dp[j + a[i]] += dp[j]
        dp[j + a[i]] %= MOD


for i in range(N + 1):
    ans += ceil(i / 2) * dp[i]

for i in range(n):
    for j in range(a[i]):
        ans += dp[j] * (a[i] - ceil((j + a[i]) / 2))
        ans %= MOD

print(ans)


Comments

Submit
0 Comments
More Questions

1114A - Got Any Grapes
224B - Array
125B - Simple XML
567B - Berland National Library
431B - Shower Line
282C - XOR and OR
1582B - Luntik and Subsequences
609A - Флеш-карты
1207A - There Are Two Types Of Burgers
371C - Hamburgers
343B - Alternating Current
758B - Blown Garland
1681B - Card Trick
1592A - Gamer Hemose
493D - Vasya and Chess
1485A - Add and Divide
337B - Routine Problem
1392D - Omkar and Bed Wars
76E - Points
762C - Two strings
802M - April Fools' Problem (easy)
577B - Modulo Sum
1555B - Two Tables
1686A - Everything Everywhere All But One
1469B - Red and Blue
1257B - Magic Stick
18C - Stripe
1203B - Equal Rectangles
1536A - Omkar and Bad Story
1509A - Average Height