Rezultati

Up. imeNalogaJezikRezultatČas oddaje
u3pm Jungle Speed Python 100/100OK 11. maj '17 @ 18:15

Test Točke Porabljen spomin Porabljen čas Status
#1 9/9 6,461 MiB 0,000 s OK
#2 9/9 6,434 MiB 0,000 s OK
#3 9/9 6,398 MiB 0,000 s OK
#4 9/9 6,395 MiB 0,000 s OK
#5 9/9 6,422 MiB 0,000 s OK
#6 9/9 6,410 MiB 0,000 s OK
#7 9/9 6,410 MiB 0,000 s OK
#8 9/9 6,414 MiB 0,000 s OK
#9 9/9 6,449 MiB 0,000 s OK
#10 9/9 6,414 MiB 0,000 s OK
#11 10/10 6,398 MiB 0,000 s OK

Ocenjevani program (jungle_speed.py):
import sys
from copy import deepcopy

def zmaga(igralci, kup):
    for i in range(len(igralci)):
        if len(igralci[i]) == 0 and len(kup[i]) == 0:
            return i
    return -1

def preveri_pare(kup, trenutni):
    for i in range(len(kup)):
        if i != trenutni:
            if len(kup[i]) != 0:
                if kup[i][-1] == kup[trenutni][-1]:
                    return i
    return -1


#a = open("jungle_speed.txt", "r").readlines()
a = sys.stdin.readlines()
N = int(a[0].strip())
karte = list(map(int, a[1].strip().split(" ")))
M = len(karte)
igralci = [[] for i in range(N)]
kup = [[] for i in range(N)]
for i in range(M):
    # na vrh narobe obrnjenega kupa je zadnja karta v seznamu - ta bo igrana v naslednji potezi
    igralci[i%N].append(karte[i])

trenutni = 0
zmag = False

def poteza(igralci, kup):
    global trenutni
    global zmag
    if zmag:
        return
    else:
        if len(igralci[trenutni]) == 0:
            kup[trenutni].reverse()
            igralci[trenutni] = kup[trenutni][:]
            kup[trenutni] = []
        kup[trenutni].append(igralci[trenutni].pop())
        s_parom = preveri_pare(kup, trenutni)
        if s_parom != -1:
            for i in kup[trenutni]:
                kup[s_parom].append(i)
            kup[trenutni] = kup[s_parom][:]
            kup[s_parom] = []
            kup[trenutni].reverse()
            nove = kup[trenutni][:]
            for i in igralci[trenutni]:
                nove.append(i)
            igralci[trenutni] = nove[:]
            kup[trenutni] = []
            if (zmaga(igralci, kup) != -1):
                print(zmaga(igralci, kup)+1)
                zmag = True
            poteza(igralci, kup)
        else:
            trenutni += 1
            trenutni = trenutni%N
            if (zmaga(igralci, kup) != -1):
                print(zmaga(igralci, kup)+1)
                zmag = True
            poteza(igralci, kup)


poteza(igralci, kup)