We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
Most solutions (and even the editorial) are not fully correct, because they ignore this case:
If there are ants on positions 999 and 0 (distance 1 over ends of intervall) the algorithms may give wrong results, e.g
: the algos find one pair (0,1), not two pairs (1,2), (999,0) .
(see also post of ygrinev below).
Clumsy but correct solution:
defsolve(V):n=len(V)# instead of turning, the ants can be seen to pass each other# so they simply go around and around. # in each direction go about half of them,# meeting the other half 2 times a round, 2x hello in a meeting# 1 round is 10_000 sec, 10**9 sec is 10**5 roundsmeets=(n//2) * (n-n//2) * 2 * 2 * 10**5# now what about the last 6 sec? => must maximize meetings here# 6 sec is 0.6 m per ant, that is ants can only meet if adjacentV.sort()forposinrange(n):if(V[pos]-V[pos-1])%1000>1:breakrun=0foriinrange(pos,pos+n):if(V[i%n]-V[(i-1)%n])%1000==1:run+=1else:meets+=(run+1)//2 * 2run=0else:ifrun:meets+=(run+1)//2 * 2returnmeets
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Ants
You are viewing a single comment's thread. Return to all comments →
Most solutions (and even the editorial) are not fully correct, because they ignore this case:
If there are ants on positions 999 and 0 (distance 1 over ends of intervall) the algorithms may give wrong results, e.g : the algos find one pair (0,1), not two pairs (1,2), (999,0) .
(see also post of ygrinev below).
Clumsy but correct solution: