Rezultati

Up. imeNalogaJezikRezultatČas oddaje
vlakectomaz-2018 Droni Python 3 0/100Prekoračen čas (TLE) 10. maj '18 @ 19:43

Test Točke Porabljen spomin Porabljen čas Status
#1 0/5 8,566 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#2 0/5 8,656 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#3 0/5 8,621 MiB 0,000 s Prekoračen čas
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#4 0/5 8,664 MiB 0,000 s Prekoračen čas
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#5 0/5 8,570 MiB 0,000 s Prekoračen čas
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#6 0/5 8,531 MiB 0,000 s Prekoračen čas
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#7 0/5 8,500 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#8 0/5 8,578 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#9 0/5 8,480 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#10 0/5 9,137 MiB 0,000 s Prekoračen čas
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#11 0/5 8,652 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#12 5/5 8,656 MiB 0,000 s OK
Povratna informacija sodniškega sistema:
​The output was correct.
#13 0/5 8,582 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#14 0/5 8,492 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#15 5/5 8,496 MiB 0,000 s OK
Povratna informacija sodniškega sistema:
​The output was correct.
#16 0/5 8,512 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#17 5/5 8,602 MiB 0,000 s OK
Povratna informacija sodniškega sistema:
​The output was correct.
#18 0/5 8,664 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#19 0/5 8,664 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.
#20 0/5 8,488 MiB 0,000 s Napačen odgovor
Povratna informacija sodniškega sistema:
​The program made an invalid move.

Ocenjevani program (droni.py):
xa0, ya0, za0, xa1, ya1, za1 = [int(x) for x in input().split(" ")]
xb0, yb0, zb0, xb1, yb1, zb1 = [int(x) for x in input().split(" ")]

s1 = [xa0, ya0, za1]
c1 = (xa1, ya1, za1)

s2 = [xb0, yb0, zb0]
c2 = (xb1, yb1, zb1)

diff1 = [b-a for a,b in zip(s1,c1)]
diff2 = [b-a for a,b in zip(s2,c2)]

zamenjaj = False
if sum(map(abs, diff1)) < sum(map(abs, diff2)):
    zamenjaj = True
    s1, s2 = s2, s1
    c1, c2 = c2, c1
    diff1, diff2 = diff2, diff1

pot1 = [tuple(s1)]
pot2 = [tuple(s2)]

# simuliramo prvega
while(sum(map(abs, diff1)) > 0):
    cand = sorted([(abs(v), e) for e,v in enumerate(diff1)], reverse=True)

    _, maxI = cand[0]

    if(diff1[maxI] > 0):
        s1[maxI] += 1
        diff1[maxI] -= 1
    else:
        s1[maxI] -= 1
        diff1[maxI] += 1

    pot1.append(tuple(s1))

step = 0
while(sum(map(abs, diff2)) > 0):
    cand = sorted([(abs(v), e) for e,v in enumerate(diff2)], reverse=True)

    e_cur = list(pot1[min(step, len(pot1)-1)])
    e_next = list(pot1[min(step+1, len(pot1)-1)])

    found = False
    for v, maxI in cand:
        if (v<=0):
            break

        sn = s2[:]
        sn[maxI] += 1 if(diff2[maxI] > 0) else -1

        crash = (sn == e_next or (sn== e_cur and s2 == e_next))
        if(not crash):
            found = True
            s2 = sn
            diff2[maxI] -= 1 if(diff2[maxI] > 0) else -1
            break

    if (not found and (e_cur == e_next or e_next == s2)):

        # poisci os zabitja
        diffc = [abs(a-b) for a,b in zip(s2, e_cur)]
        axis = -1
        for i,v in enumerate(diffc):
            if v > 0:
                axis = i
                break

        way = e_cur[axis] - s2[axis] > 0
        if(axis==0):
            s2[1] += 1
            pot2.append(tuple(s2))
            for _ in range(2):
                s2[0] += 1 if(way>0) else -1
                pot2.append(tuple(s2))
            s2[1] -= 1
        else:
            s2[0] += 1
            pot2.append(tuple(s2))
            for _ in range(2):
                s2[1] += 1 if (way > 0) else -1
                pot2.append(tuple(s2))
            s2[0] -= 1

        step += 3
        diff2[axis] -= 2 if way > 0 else -2

    step += 1
    pot2.append(tuple(s2))

if(len(pot1) > len(pot2)):
    pot2 = pot2 + (len(pot1)-len(pot2)) * [pot2[-1]]

if(len(pot2) > len(pot1)):
    pot1 = pot1 + (len(pot2) - len(pot1)) * [pot1[-1]]

if(zamenjaj):
    z = zip(pot2, pot1)
else:
    z = zip(pot1, pot2)

for p1,p2 in z:
    x1,y1,z1 = p1
    x2,y2,z2 = p2
    print("(%d %d %d) (%d %d %d)" % (x1,y1,z1,x2,y2,z2))