Zoznam úloh

3. Ach tie jazykové modely

Kolo už skončilo. Môžeš si pozrieť vzorové riešenie.

Táto úloha je špeciálna. Odovzdávate program, ktorý vypíše vstup pre naše programy. Ak k nej máte nejaké otázky, napíšte nám. Kontakt nájdete pri ostatných úlohách.

Miško so Štepim chystajú nové kolo najlepšieho semináru - PRASKu. Keďže sú veľmi leniví, a už vôbec sa im nechce programovať, Miško sa rozhodol, že sa spýta veľkého jazykového modelu o pomoc. Štepi si je istý, že ten vygenerovaný program nemôže byť správny, nevie to však dokázať. Pomôžte Štepimu nájsť taký vstup, na ktorom Miškov program vygeneruje chybný výstup.

Hodnotenie

Táto úloha má $4$ podúlohy, za každú viete získať $50$ bodov.

Podúloha 1

Na vstupe je na jedinom riadku niekoľko medzerou oddelených čísel. Vypíšte druhé najväčšie číslo.

Miškov program:

vstup = [int(x) for x in input().split()]

najvacsie = 0

for i in range(len(vstup)):
    if vstup[i] > najvacsie:
        najvacsie = vstup[i]

druhe_najvacsie = 0

for i in range(len(vstup)):
    if vstup[i] > druhe_najvacsie and vstup[i] < najvacsie:
        druhe_najvacsie = vstup[i]

print(druhe_najvacsie)

Na vstupe je jediný riadok medzerou oddelených čísel. Počet čísel je $n$ a $2 \leq n \leq 50$. Hodnoty sú celé čísla v intervale $0$ až $1000$.

1 3 2 5 4
4

Podúloha 2

Na vstupe je na jedinom riadku niekoľko medzerou oddelených čísel - nadmorské výšky v krajine. Kráľa Stanka by zaujímalo, kolko pozícií v jeho kráľovstve je na vrchole kopca - teda počet takých pozicií, že najbližšia iná nadmorská výška vľavo aj vpravo je nižšia.

Miškov program:

vstup = [int(x) for x in input().split()]

vrcholy = []
odpoved = 0
for i in range(1, len(vstup)):
    if vstup[i] > vstup[i-1]:
        if len(vrcholy) > 0:
            vrcholy.pop()
        vrcholy.append(vstup[i])
    elif vstup[i] < vstup[i-1]:
        while len(vrcholy) > 0:
            odpoved += 1
            vrcholy.pop()
    elif len(vrcholy) > 0:
        vrcholy.append(vstup[i])

print(odpoved)

Na vstupe je jediný riadok medzerou oddelených čísel. Počet čísel je $n$ a $2 \leq n \leq 50$. Hodnoty sú celé čísla v intervale $0$ až $1000$.

1 3 4 4 2 3 1 2
3

Sú to pozície s výškou 4, 4 a 3. Pozície na kraji královstva sa nikdy nerátajú.

Podúloha 3

Medzni $n$ vedúcimi Prasku je $m$ dvojíc kamarátov. Strižo pozná všetkých svojich kamarátov a navyše aj všetkých kamarátov svojich kamarátov. Vypíšte, koľko vedúcich Strižo nepozná.

Miškov program:

n, m, strizo = map(int, input().split())

kamarati = [[] for i in range(n)]

for i in range(m):
    a, b = map(int, input().split())
    kamarati[a].append(b)
    kamarati[b].append(a)

strizo_pozna = [False for i in range(n)]

strizo_nepozna = n

for i in range(len(kamarati[strizo])):
    kamarat = kamarati[strizo][i]
    if not strizo_pozna[kamarat]:
        strizo_pozna[kamarat] = True
        strizo_nepozna -= 1

    for i in range(len(kamarati[kamarat])):
        kamarat_kamarata = kamarati[kamarat][i]
        if not strizo_pozna[kamarat_kamarata]:
            strizo_pozna[kamarat_kamarata] = True
            strizo_nepozna -= 1

print(strizo_nepozna)

Na prvom riadku vstupu sú tri čísla $n$, $m$, a $s$ - číslo Striža. $2 \leq n \leq 100$, $2 \leq m \leq 100$, $0 \leq s < n$. Nasleduje $m$ riadkov, kde každý riadok obsahuje dve čísla $u$ a $v$, ktoré znamenajú, že ľudia s tými číslami sú kamaráti. $0 \leq u \leq n$, $0 \leq v < n$.

5 4 0
0 1
0 2
1 2
3 4
2

Strižo (človek $0$) pozná človeka $1$, a človeka $2$ pozná cez človeka $1$. Ľudí $3$ a $4$ ale nepozná.

Podúloha 4

V tejto podúlohe nevieme čo presne Miškov program robí (a ani to nechceme zistiť), dôležité je, že program dokážeme spustiť.

Na vstupe je na jedinom riadku niekoľko medzerou oddelených čísel. Vypíšte zvyšok po delení ich súčtu $256$.

Miškov program:

_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__[::-1]));exec((_)(b'=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'))



vstup = [int(x) for x in input().split()]

print(f4(vstup))

Na vstupe je jediný riadok medzerou oddelených čísel. Počet čísel je $n$ a $2 \leq n \leq 50$. Hodnoty sú celé čísla v intervale $0$ až $1000$.

1 2 3 4 5
15

Odovzdávanie

Odovzdávate program, ktorý načíta na jedinom riadku jedno číslo z množiny ${1, 2, 3, 4}$. Váš program má na výstup vypísať vstup pre danú podúlohu, na ktorom Miškov program vypíše zlý výstup.

Napríklad v Pythone:

uloha = int(input())
if uloha == 1:
    print('''sem napíš vstup,
môže byť aj na viac riadkov''')
if uloha == 2:
    print('''a sem vstup pre druhú úlohu''')
# a tak ďalej

Tipy a triky

Ak neviete prísť na to, čo Miškove programy robia, alebo kde by mohla byť chyba v Miškových riešeniach, može vám pomôcť program spustiť. Taktiež ho môžete nejak upravovať (napr. pridať pomocné výpisy).

Pre odovzdávanie sa musíš prihlásiť.