B-I-2

In [1]:
n = int(input())
p = [int(_) for _ in input().split()]
6
5 5 4 3 1 1
In [2]:
print('a:', sum(p))
a: 19
In [4]:
for i, pi in enumerate(p,1):
    print(i, pi)
1 5
2 5
3 4
4 3
5 1
6 1
In [9]:
print('c:', max(i*pi for i,pi in enumerate(p,1)))
c: 12
In [10]:
for i in range(n-1):
    print("porovnaj hodnoty na indexoch:", i, i+1)
porovnaj hodnoty na indexoch: 0 1
porovnaj hodnoty na indexoch: 1 2
porovnaj hodnoty na indexoch: 2 3
porovnaj hodnoty na indexoch: 3 4
porovnaj hodnoty na indexoch: 4 5
In [11]:
n-sum(1 for i in range(n-1) if p[i] == p[i+1]) #ak rozne, tak n; pri rovnakych sa 1 moznost odpocita
Out[11]:
4
In [16]:
1+len([1 for i in range(n-1) if p[i] != p[i+1]]) #prve a potom kazde rozne(mensie) od predchadzajuceho
Out[16]:
4

B-I-3-lahsia

In [17]:
s = input()
DHHHDH
In [21]:
pocet = 1
for c in s:
    if c == "D": #dole, mame 2 moznosti pre kazdu komorku v ktorej sa nachadzame
        pocet *= 2
    else: #hore H
        if pocet > 1:
            pocet = pocet//2 #celociselne delenie
print(pocet)
1

B-I-3

In [22]:
n = int(input())
urovne = [[int(_) for _ in input().split()] for i in range(n)]
u_start, k_start, m = [int(_) for _ in input().split()]
s = input()
5
1 -1
3 1 1 1
7 1 1 2 3 3 3 3
6 1 1 3 3 3 5
2 2 2
2 5 7
HDDHHHD
In [23]:
print(n)
print(urovne)
print(s)
5
[[1, -1], [3, 1, 1, 1], [7, 1, 1, 2, 3, 3, 3, 3], [6, 1, 1, 3, 3, 3, 5], [2, 2, 2]]
HDDHHHD
In [35]:
def hore(uroven, komorky):
    u = uroven-1 #hore znamena o uroven vyssie, t.j. -1
    k = [] #na zaciatku sa nevieme dostat do ziadnej komorky
    for komorka in komorky:
        n_komorka = urovne[uroven][komorka] #najdeme komorku o uroven vyssie
        if not n_komorka in k: # ak tuto komorku este nemame v zozname
            k.append(n_komorka) 
    return u, k
    
print(hore(3, [2,4,5,6]))
(2, [1, 3, 5])
In [37]:
def dole(uroven, komorky):
    u = uroven+1 #dole = pripocitaj 1 k urovni
    k = []
    for komorka in komorky:
        for i, hore in enumerate(urovne[u][1:],1):
            if hore == komorka:
                k.append(i)
    return u, k

print(dole(2, [3,4,5,6]))
(3, [3, 4, 5, 6])
In [38]:
pozicia = (u_start, [k_start]) #zaciname v jednej komorke
for c in s:
    if c == 'H':
        pozicia = hore(pozicia[0], pozicia[1])
    else:
        pozicia = dole(pozicia[0], pozicia[1])
print(pozicia)        
print('vysledok:', len(pozicia[1]))
    
(1, [1, 2, 3])
vysledok: 3
In [43]:
def dole(uroven, komorky):
    u = uroven+1 #dole = pripocitaj 1 k urovni
    k = []
    for komorka in komorky:
        k.extend([i for i, hore in enumerate(urovne[u][1:],1) if hore == komorka])
    return u, k

print(dole(2, [3,4,5,6]))
(3, [3, 4, 5, 6])
In [49]:
def dole(uroven, komorky):
        return uroven+1, [i for i, hore in enumerate(urovne[uroven+1][1:],1) for komorka in komorky if hore == komorka]

print(dole(2, [3,4,5,6]))
(3, [3, 4, 5, 6])
In [ ]: