Demo entry 6742846

Civil War

   

Submitted by anonymous on May 19, 2018 at 11:04
Language: Python 3. Code size: 1.2 kB.

def first(list):
    return list[0]


def second(list):
    return list[1]


def third(list):
    return list[2]


n = int(input())
nDist = list(map(int, input().split()))
nCoord = []
for i in range(len(nDist)):  # создаем список из кортежей для n селений
    nCoord.append((nDist[i], i + 1))
nCoord.sort(key=first)

m = int(input())
mDist = list(map(int, input().split()))
mCoord = []
for j in range(len(mDist)):  # список из кортежей для m бункеров
    mCoord.append((mDist[j], j + 1))
mCoord.sort(key=first)

# начинаем перебор село-бункер
plan = []
j_nrst = 0
for q in range(n):
    if m == 1:
        plan.append((q, 1))
    elif abs(nCoord[q][0] - mCoord[j_nrst][0]) < abs(nCoord[q][0] - mCoord[j_nrst + 1][0]):
        plan.append((nCoord[q][1], mCoord[j_nrst][1]))
    elif j_nrst + 1 < m - 1:  # это НЕ предпоследний бункер?
        while abs(nCoord[q][0] - mCoord[j_nrst][0]) > abs(nCoord[q][0] - mCoord[j_nrst + 1][0]):
            j_nrst = j_nrst + 1
        plan.append((nCoord[q][1], mCoord[j_nrst][1]))
    else:
        plan.append((nCoord[q][1], mCoord[j_nrst + 1][1]))

# вывод в строку
plan.sort(key=first)
for k in range(n):
    print(plan[k][1], end=' ')

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).