Task · algorithms medium Python ·
Partition into equal sums
Return True if the list of positive integers can be split into two groups with equal sums (every number goes into exactly one group; a group may be empty). Up to 200 numbers, each at most 500.
Signature
def can_partition(nums: list[int]) -> bool:Examples
can_partition([1, 5, 11, 5]) # -> True
can_partition([1, 2, 3, 5]) # -> FalsePlus 7 hidden tests and 2 large-input tests under a time limit; their inputs are not shown. Tasks are given to the models in English.
#1MoonshotAI Kimi K2.7 Codesolved · 11 of 11 testsanswer in 2.5 s · runtime 7 ms · $0.0013 ✓ can_partition([1, 5, 11, 5])expected True <1 ms ✓ can_partition([1, 2, 3, 5])expected False <1 ms ✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 possible = 1 for num in nums: possible |= possible << num if possible >> target & 1: return True return (possible >> target) & 1 == 1#1Anthropic Claude Haiku 5.5solved · 11 of 11 testsanswer in 1.1 s · runtime 16 ms · $0.0001 ✓ can_partition([1, 5, 11, 5])expected True <1 ms ✓ can_partition([1, 2, 3, 5])expected False 9 ms ✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total % 2: return False target = total // 2 if target == 0: return True mask = 1 for x in nums: mask |= mask << x if (mask >> target) & 1: return True return bool((mask >> target) & 1)#1Qwen3 Coder Nextsolved · 11 of 11 testsanswer in 2.3 s · runtime 19 ms · $0.0002 ✓ can_partition([1, 5, 11, 5])expected True 1 ms ✓ can_partition([1, 2, 3, 5])expected False <1 ms ✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms✓ 2 ms✓ <1 ms✓ 6 ms⏱ 1 ms⏱ 3 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) # If total sum is odd, impossible to split into two equal parts if total % 2 != 0: return False target = total // 2 # dp[i] represents whether sum i is achievable dp = [False] * (target + 1) dp[0] = True # Sum 0 is always achievable (empty subset) for num in nums: # Traverse from right to left to avoid using the same number twice for i in range(target, num - 1, -1): if dp[i - num]: dp[i] = True return dp[target]#4SpaceXAI Grok 4.7not solved · 10 of 11 testsanswer in 27 s · runtime 7 ms · $0.01 ✓ can_partition([1, 5, 11, 5])expected True 1 ms ✓ can_partition([1, 2, 3, 5])expected False <1 ms ✗ wrong answer✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 reachable = 1 mask = (1 << (target + 1)) - 1 for x in nums: reachable |= (reachable << x) & mask if reachable & (1 << target): return True return FalseSecond try
solved · 11 of 11 testsanswer in 110 s · $0.04The model saw how many tests failed, the failing examples with the expected and returned values, and only why hidden tests failed, not their inputs. Doesn't count for places or the rating.
✓ can_partition([1, 5, 11, 5])expected True <1 ms ✓ can_partition([1, 2, 3, 5])expected False <1 ms ✓ <1 ms✓ 2 ms✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 reachable = 1 if (reachable >> target) & 1: return True mask = (1 << (target + 1)) - 1 for x in nums: reachable |= (reachable << x) & mask if (reachable >> target) & 1: return True return False
Tokens cost: $0.06 · How rounds are run and scored →