Rezultati

Up. imeNalogaJezikRezultatČas oddaje
muzik-2018 Gusarji Python 3 0/100Prekoračen čas (TLE) 13. okt '18 @ 15:39

Test Točke Porabljen spomin Porabljen čas Status
#1 0/4 8,438 MiB 0,000 s Napačen odgovor
#2 0/4 8,344 MiB 0,000 s Napačen odgovor
#3 0/4 8,453 MiB 0,000 s Napačen odgovor
#4 0/4 8,344 MiB 0,000 s Napačen odgovor
#5 0/4 8,359 MiB 0,000 s Napačen odgovor
#6 0/4 8,449 MiB 0,000 s Napačen odgovor
#7 0/4 8,660 MiB 0,000 s Napačen odgovor
#8 0/4 9,457 MiB 0,000 s Napačen odgovor
#9 0/4 13,063 MiB 0,000 s Napačen odgovor
#10 0/4 27,520 MiB 0,754 s Napačen odgovor
#11 0/4 54,070 MiB 2,549 s Prekoračen čas
#12 0/4 49,965 MiB 3,265 s Prekoračen čas
#13 0/4 71,055 MiB 3,183 s Prekoračen čas
#14 0/4 76,762 MiB 3,162 s Prekoračen čas
#15 0/4 76,145 MiB 3,177 s Prekoračen čas
#16 0/4 76,375 MiB 3,233 s Prekoračen čas
#17 0/4 8,434 MiB 0,000 s Napačen odgovor
#18 0/4 8,430 MiB 0,000 s Napačen odgovor
#19 0/4 8,438 MiB 0,000 s Napačen odgovor
#20 0/4 8,391 MiB 0,000 s Napačen odgovor
#21 0/5 8,367 MiB 0,000 s Napačen odgovor
#22 0/5 8,355 MiB 0,000 s Napačen odgovor
#23 0/5 8,344 MiB 0,000 s Napačen odgovor
#24 0/5 8,414 MiB 0,000 s Napačen odgovor

Ocenjevani program (gusarji.py):
import math

stopinja = math.pi/180

a,w,n = list(map(float, input().strip().split()))
w = w/60
n = int(n)

ladje = []
for _ in range(n):
    b,d,v = list(map(float, input().strip().split()))
    v = v/(3600)
    ladje.append((b,d,v))

ladje.append((a,10**5, 0.01))

ladje.sort()

flag = None
for j in range(len(ladje)):
    if ladje[j][0] == a:
        flag = j
        break

ladje = ladje[flag:] + ladje[:flag]

print(ladje)

f = dict()

for a in range(n+1):
    for b in range(n+1):
        for k in range(2):
            f[a,b,k] = None

for a in range(n+1):
    for k in range(2):
        f[a,a,k] = 0


for d in range(n):
    for A in range(n+1):
        for k in range(2):
            B = (A + d) % (n+1)
            if f[A,B,k] is None:
                continue
            if k == 0:
                b1,d1,v1 = ladje[A]
            else:
                b1,d1,v1 = ladje[B]

            b2,d2,v2 = ladje[(A-1) % (n+1)]
            time = f[A,B,k]
            needed = (stopinja*abs(b2-b1))/w
            pos = (d2-1)/v2
            if time + needed <= pos:
                if f[(A-1) % (n+1), B, 0] is None:
                    f[(A-1) % (n+1), B, 0] = time + needed
                else:
                    f[(A - 1) % (n + 1), B, 0] = \
                        min(f[(A-1) % (n+1), B, 0], time + needed)

            b2,d2,v2 = ladje[(B+1) % (n+1)]
            time = f[A,B,k]
            needed = (stopinja*abs(b2-b1))/w
            pos = (d2 - 1)/v2
            if time + needed <= pos:
                if f[A,(B+1)%(n+1), 1] is None:
                    f[A,(B+1)%(n+1), 1] = time + needed
                else:
                    f[A, (B + 1) % (n + 1), 1] = \
                        min(f[A,(B+1)%(n+1), 1], time + needed)

print(f[0, n,0], f[0,n,1])
print(f)