1977B - Binary Colouring - CodeForces Solution


bitmasks constructive algorithms math

Please click on ads to support us..

Python Code:

def check_highest_2(x):
    i = 31
    while i >= 0:
        if 2 ** i <= x:
            return i
        i -= 1

def recur(x, ans, isminus):
        if x <= 0:
        return True
    temp = check_highest_2(x)
    done = True
    done2 = True
    for num in ans:
        if num[1] == temp+1:
            done = False
        if num[1] == temp+2 or num[1] == temp + 1:
            done2 = False
    if done:   
        if isminus:
            ans.append((-1, temp))
        else:
            ans.append((1, temp))
        
        if recur(x - 2 ** temp, ans, isminus) == True:
            return True
        ans.pop()
    if done2:
        if isminus:
            ans.append((-1, temp+1))
        else:
            ans.append((1, temp+1))
        
        if recur(2 ** (temp+1) - x, ans, not isminus) == True:
            return True
        ans.pop()
    return False

    
def solve():
    ans = []
    x = int(input())

    recur(x, ans, False)
    temp_ans = [0] * (32)
    for num in ans:
        temp_ans[num[1]] = num[0]
    print(32)
    print(* temp_ans)

for i in range(int(input())):
    solve()


Comments

Submit
0 Comments
More Questions

1566B - MIN-MEX Cut
678C - Joty and Chocolate
1352E - Special Elements
1520E - Arranging The Sheep
1157E - Minimum Array
1661D - Progressions Covering
262A - Roma and Lucky Numbers
1634B - Fortune Telling
1358A - Park Lighting
253C - Text Editor
365B - The Fibonacci Segment
75A - Life Without Zeros
1519A - Red and Blue Beans
466A - Cheap Travel
659E - New Reform
1385B - Restore the Permutation by Merger
706A - Beru-taxi
686A - Free Ice Cream
1358D - The Best Vacation
1620B - Triangles on a Rectangle
999C - Alphabetic Removals
1634C - OKEA
1368C - Even Picture
1505F - Math
1473A - Replacing Elements
959A - Mahmoud and Ehab and the even-odd game
78B - Easter Eggs
1455B - Jumps
1225C - p-binary
1525D - Armchairs