1957D - A BIT of an Inequality - CodeForces Solution


bitmasks brute force dp math

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
    n = int(input())
    a = [*map(int, input().split())]
    dp0 = [1] * 31
    dp1 = [0] * 31
    pre0 = [0] * 31
    pre1 = [0] * 31
    ans = res = 0
    for v in a:
        m = v.bit_length() - 1
        pre0[m] += dp0[m]
        pre1[m] += dp1[m]
        res ^= v
        for i in range(31):
            if res & (1 << i):
                dp1[i] += 1
                ans += pre1[i]
            else:
                dp0[i] += 1
                ans += pre0[i]
    print(ans)


Comments

Submit
0 Comments
More Questions

454B - Little Pony and Sort by Shift
1152A - Neko Finds Grapes
1719B - Mathematical Circus
1719C - Fighting Tournament
1642A - Hard Way
285C - Building Permutation
1719E - Fibonacci Strings
1696C - Fishingprince Plays With Array
1085A - Right-Left Cipher
1508B - Almost Sorted
1690C - Restoring the Duration of Tasks
1055A - Metro
1036D - Vasya and Arrays
1139C - Edgy Trees
37A - Towers
353A - Domino
409H - A + B Strikes Back
1262A - Math Problem
158C - Cd and pwd commands
194A - Exams
1673B - A Perfectly Balanced String
1104B - Game with string
1169B - Pairs
1567D - Expression Evaluation Error
78A - Haiku
1287A - Angry Students
1428A - Box is Pull
234B - Reading
581B - Luxurious Houses
1481C - Fence Painting