Я столкнулся с проблемой, чтобы получить лог c для следующей проблемы - PullRequest
0 голосов
/ 29 февраля 2020

Как мне написать логи c для следующего вопроса. Этот вопрос немного сложен.

Два королевства находятся в состоянии войны. В Королевстве 1 есть N солдат (пронумерованных от 1 до N), и война продолжается в течение K дней. Каждый день только один солдат из каждого королевства сражается.

Королевство 1 может выбрать одного солдата из числа солдат от Ni до Nj. Ni и Nj предоставляются вам на каждый день.

Критерии выбора: У каждого солдата есть 2 параметра - A и B. Солдат выбирается / выбирается, если A макс. Если у более чем одного солдата есть A max, то у солдата с мин. B (из вошедших в короткий список солдат) выбирается. Если по-прежнему доступно более одного солдата, выбирается солдат с наименьшим индексом (среди вошедших в короткий список солдат). Выведите номер солдата, выбранный для каждого дня войны.

Ввод: строка 1 содержит количество солдат Королевства1 => N строка 2 содержит N значений, разделенных пробелом. Строка 3 содержит N значений, разделенных пробелом. B Строка 4 содержит количество дней, в течение которых идет бой => K Следующие K строк содержат разделенные пробелами значения Ni и Nj

Вывод: K строк содержат номер солдата, выбранный для каждого дня войны.

Пример ввода: 10 2 5 3 7 9 2 9 8 7 15 5 2 1 8 3 1 2 9 0 5 3 1 5 3 8 4 10

Результат: 5 7 10

Любой помощь приветствуется. Заранее спасибо.

1 Ответ

0 голосов
/ 29 февраля 2020

это может быть не самый чистый ответ, но он будет работать (в этом коде я предполагал, что ni и nj также есть в коротком списке)

num = input()
a = input()
b = input()
k = input()
start = []
end = []
for i in range(int(k)):
    (ni, nj) = input().split(' ')
    start.append(int(ni))
    end.append(int(nj))
for j in range(len(start)):
    amax = a[start[j]-1]
    bmin = a[start[j]-1]
    chosen = start[j]
    for i in range(end[j]-start[j]+1):
        if amax < int(a[start[j]+i-1]):
            amax = int(a[start[j]+i-1])
            bmin = int(b[start[j]+i-1])
            chosen = start[j]+i
        elif amax == int(a[start[j]+i-1]):
            if bmin > int(b[start[j]+i-1]):
                amax = int(a[start[j] + i - 1])
                bmin = int(b[start[j] + i - 1])
                chosen = start[j]+i
    print('the chosen one is number %i' % chosen)
...