39 lines
757 B
Python
39 lines
757 B
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import sys
|
||
|
|
||
|
def search_two(A, sum2, i_skip):
|
||
|
i = 0
|
||
|
j = len(A) - 1
|
||
|
|
||
|
while i < j:
|
||
|
if i == i_skip:
|
||
|
i = i + 1
|
||
|
elif j == i_skip:
|
||
|
j = j - 1
|
||
|
else:
|
||
|
cs = A[i] + A[j]
|
||
|
if cs == sum2:
|
||
|
return True
|
||
|
elif cs > sum2:
|
||
|
j = j - 1
|
||
|
else:
|
||
|
i = i + 1
|
||
|
|
||
|
return False
|
||
|
|
||
|
def sum_of_three(A, sum3):
|
||
|
A.sort() # assume using mergesort for worst case of O(n*log(n))
|
||
|
l = len(A)
|
||
|
|
||
|
for i in range(l):
|
||
|
if search_two(A, sum3 - A[i], i):
|
||
|
return True
|
||
|
|
||
|
return False
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
args = [int(x) for x in sys.argv[1:]]
|
||
|
print(sum_of_three(args[1:], args[0]))
|
||
|
|