This repository was archived by the owner on Apr 16, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpractice.py
More file actions
68 lines (60 loc) · 1.71 KB
/
practice.py
File metadata and controls
68 lines (60 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import argparse
def aux(pizzas, max_, counter = 0, slices = 0, result = []):
if not pizzas:
return slices, result
pizza, pizzas = pizzas[0], pizzas[1:]
if slices+pizza <= max_:
slices2, result2 = aux(pizzas, max_, counter+1, slices, result)
slices1, result1 = aux(pizzas, max_, counter+1, slices+pizza, result+[counter])
if slices1 > slices2:
return slices1, result1
else:
return slices2, result2
else:
return slices, result
def aux2(slices, k):
n = len(slices)
x = n-1
max_ = 0
ocurrences = []
actual = []
while x > 0:
tot = slices[x]
actual = []
actual.append(x)
y = x-1
while y >= 0:
if slices[y]+tot < k:
tot += slices[y]
actual.append(y)
y-=1
elif slices[y]+tot == k:
actual.append(y)
return actual
else:
y-=1
x-=1
if tot > max_:
max_ = tot
ocurrences = actual
return ocurrences
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('input_path', type=str,
help='Path for the input file.')
args = parser.parse_args()
with open(args.input_path, 'r') as input_file:
string = input_file.read()
lines = string.split('\n')
specs = [int(spec) for spec in lines[0].split(' ')]
slices = [int(slice_) for slice_ in lines[1].split(' ')]
if False:
_, pos = aux(slices, specs[0])
pos = [str(position) for position in pos]
with open(args.input_path.split(".")[0]+".out", "w") as output_file:
output_file.write('{specs}\n{slices}'.format(specs=len(pos), slices=" ".join(pos)))
pos = aux2(slices, specs[0])
pos = [str(posi) for posi in pos]
pos.reverse()
with open(args.input_path.split(".")[0]+".out", "w") as output_file:
output_file.write('{specs}\n{slices}'.format(specs=len(pos), slices=" ".join(pos)))