1612G - Max Sum Array - CodeForces Solution


combinatorics constructive algorithms greedy sortings *2500

Please click on ads to support us..

Python Code:

import sys, os, io
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline

m = int(input())
mod = pow(10, 9) + 7
c = list(map(int, input().split()))
n = pow(10, 6) + 5
fact = [1] * (n + 1)
for i in range(1, n + 1):
    fact[i] = i * fact[i - 1] % mod
cnt = [0] * (n + 1)
for i in c:
    cnt[i - 1] += 1
for i in range(n - 2, -1, -1):
    cnt[i] += cnt[i + 2]
s, c, u = 0, 1, 0
inv2 = pow(2, mod - 2, mod)
y = 0
for i in range(-n, n):
    j = abs(i)
    if not cnt[j]:
        continue
    u += cnt[j]
    u %= mod
    x = u * (u + 1) % mod
    s += i * (x - y) % mod
    s %= mod
    y = x
    c *= fact[cnt[j]]
    c %= mod
s = s * inv2 % mod
print(s, c)


Comments

Submit
0 Comments
More Questions

1622A - Construct a Rectangle
1620A - Equal or Not Equal
1517A - Sum of 2050
620A - Professor GukiZ's Robot
1342A - Road To Zero
1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad
189A - Cut Ribbon
1182A - Filling Shapes
82A - Double Cola
45A - Codecraft III
1242A - Tile Painting
1663E - Are You Safe
1663D - Is it rated - 3
1311A - Add Odd or Subtract Even
977F - Consecutive Subsequence
939A - Love Triangle
755A - PolandBall and Hypothesis
760B - Frodo and pillows
1006A - Adjacent Replacements
1195C - Basketball Exercise
1206A - Choose Two Numbers