forked from Kans29/Programming-Problems
-
Notifications
You must be signed in to change notification settings - Fork 0
/
catcher.py
52 lines (49 loc) · 1.44 KB
/
catcher.py
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
'''
Daniel Cano Salgado - Analisis y diseño de algoritmos
Solucion al problema C - Testing the CATCHER
En este problema se implementó programacion dinamica a traves del metodo de tabulación
La estructura usada para este problema se basa en una lista del mismo tamaño
que la lista de entrada de los disparos, para llenarla, se usa el criterio de la mejor de las
opciones que se consiguien a partir del misil catch[n] y se guarda en possibility[n], teniendo
al final en la lista todas las mejores opciones, de la cual se esoge el maximo.
'''
from sys import stdin
def solve(catch):
n = 1
N = len(catch)
possibility = [0 for x in range(N)]
possibility[0] = 1
while n!=N:
j = 0
maxim = 0
while j != n+1:
if(catch[j] >= catch[n] and possibility[j]+1 > maxim):
maxim = possibility[j]+1
else:
j+=1
possibility[n] = maxim
n +=1
return max(possibility)
def main():
inp = stdin
bandera = True
cases = 1
catch = []
while bandera == True:
line = int(inp.readline().strip())
if line == -1:
line = int(inp.readline().strip())
ans = solve(catch)
catch = []
if line == -1:
bandera = False
print ('Test #{0}:'.format(cases))
print (' maximum possible interceptions: {0}'.format(ans))
else:
print ('Test #{0}:'.format(cases))
print (' maximum possible interceptions: {0}\n'.format(ans))
cases += 1
catch.append(line)
else:
catch.append(line)
main()