Submission #1147698

#TimeUsernameProblemLanguageResultExecution timeMemory
1147698mrarielCoin Collecting (JOI19_ho_t4)Pypy 3
0 / 100
151 ms50868 KiB
def min_total_moves(n, coins):
    targets = [(x, y) for x in range(1, n + 1) for y in range(1, 3)]
    coins.sort()
    targets.sort()
    
    cost = [[abs(cx - tx) + abs(cy - ty) for tx, ty in targets] for cx, cy in coins]
    
    dp = [float('inf')] * (3 ** (2 * n))
    dp[0] = 0
    
    for mask in range(3 ** (2 * n)):
        assigned = [0] * (2 * n)
        
        current_mask = mask
        for i in range(2 * n):
            assigned[i] = current_mask % 3
            current_mask //= 3
        
        x = sum(1 for i in range(2 * n) if assigned[i] != 0)
        if x >= 2 * n:
            continue
        
        for j in range(2 * n):
            if assigned[j] == 0:
                for new_target in range(1, 3):
                    new_mask = mask + (new_target * (3 ** j))
                    dp[new_mask] = min(dp[new_mask], dp[mask] + cost[x][j])
    
    return dp[-1]

if __name__ == "__main__":
    n = int(input())
    coins = [tuple(map(int, input().split())) for _ in range(2 * n)]
    print(min_total_moves(n, coins))

Compilation message (stdout)

Compiling 'joi2019_ho_t4.py'...

=======
  adding: __main__.pyc (deflated 47%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...