제출 #1181797

#제출 시각아이디문제언어결과실행 시간메모리
1181797kemalmete1Solar Storm (NOI20_solarstorm)Pypy 3
0 / 100
2103 ms327104 KiB
temp = [int(v) for v in input().split()]
N = temp[0]
S = temp[1]
K = temp[2]
distances = [int(v) for v in input().split()]
values = [int(v) for v in input().split()]

positions = [0 for _ in range(N)]
curr_sum = 0
for i in range(1, N):
    curr_sum += distances[i-1]
    positions[i] = curr_sum


def is_protected(module, shields):
    protections = [(positions[s] - K, positions[s] + K) for s in shields]
    position = positions[module]
    protected = False
    for lower, upper in protections:
        if lower <= position <= upper:
            protected = True
            break
    return protected


def get_protected_map(shields):
    return [int(is_protected(module, shields)) for module in range(N)]


def fitness(shields):
    protected_map = get_protected_map(shields)
    max_values = 0
    curr_values = 0
    for i, p in enumerate(protected_map):
        if p == 1:
            curr_values += values[i]
            max_values = max(curr_values, max_values)
        else:
            curr_values = 0
    return max_values


shield_maps = 2**N
best_fitness = 0
best_shields = []
for shield_map in range(shield_maps):
    shields = [i for i in range(N) if (shield_map >> i) & 1 == 0]
    if len(shields) > S:
        continue
    curr_fitness = fitness(shields)
    if curr_fitness > best_fitness:
        best_fitness = curr_fitness
        best_shields = shields
    elif curr_fitness == best_fitness and len(shields) < len(best_shields):
        best_shields = shields

print(len(best_shields))
print(" ".join([str(s+1) for s in best_shields]))

컴파일 시 표준 출력 (stdout) 메시지

Compiling 'SolarStorm.py'...

=======
  adding: __main__.pyc (deflated 54%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...