Bonjour, je m'amuse à faire des petits problème sur codingame.com et alors que je pensais avoir réussi le problème, il me retourne un problème d'OPTIMISATION Smiley decu
J'ai changé mon code de ça

n, xs, ys = int(input()), [], []
for i in range(n):
    x, y = [int(j) for j in input().split()]
    xs.append(x)
    ys.append(y)
l, r = max(xs) - min(xs), []
for i in range(min(ys), max(ys)+1):
    s = 0   
    for e in range(n):
        s += abs(ys[e] - i)
    r.append(s)
l += min(r)
print(l)

à ça :

n, xs, ys, r = int(input()), [], [], []
for i in range(n):
    x, y = [int(j) for j in input().split()]
    xs.append(x)
    ys.append(y)
for i in range(min(ys), max(ys)+1):
    r.append(sum([abs(ys[e] - i) for e in range(n)]))
print(max(xs) - min(xs) + min(r))

en me disant que ça allait suffire mais rien à faire ... Si vous avez des petites idées d'amélioration (:
Le liens du problème : https://www.codingame.com/ide/puzzle/network-cabling
Bonne journée à tous !
Petite amélioration dont je suis plutôt fier ( j'ai toujours des problème d'optimisation mais je ne sais pas quoi faire de plus ) ...

n, xs, ys = int(input()), [], []
for i in range(n):
    x, y = [int(j) for j in input().split()]
    xs.append(x)
    ys.append(y)
from statistics import median
print((max(xs)-min(xs))+sum([abs(e - int(median(ys))) for e in ys]))
Ok je viens de réussir tous les test !
J'ai juste changé

print((max(xs)-min(xs))+sum([abs(e - int(median(ys))) for e in ys]))

en

m = int(median(ys))
print((max(xs)-min(xs))+sum([abs(e - m) for e in ys]))


Dans le bute d'éviter de refaire l'opération à chaque itérations vu que la valeur de m ne change pas (:
Modifié par vzytoi (19 Feb 2021 - 00:26)