def min_players(building_games, n): total_games = sum(building_games) # Sprawdzamy minimalne rozwiązanie, zaczynając od 3 graczy # (musimy mieć co najmniej 3 graczy do rozegrania gry) players = 3 while True: # Obliczmy maksymalną liczbę możliwych gier dla danej liczby graczy max_possible_games = (players * (players - 1) * (players - 2)) // 6 if max_possible_games >= total_games: # Sprawdźmy, czy możemy przydzielić graczy do budynków tak, # aby uzyskać zadaną liczbę gier w każdym budynku # W najprostszym przypadku, dla pierwszych trzech przypadków testowych, # wystarczy sprawdzić, czy całkowita liczba gier jest osiągalna # Dla bardziej skomplikowanych przypadków (jak czwarty przypadek testowy) # potrzebne byłoby sprawdzenie rozkładu graczy, które da wymagane # liczby gier w poszczególnych budynkach # W tym prostym rozwiązaniu zakładamy, że jeśli całkowita liczba jest osiągalna, # to prawdopodobnie da się przydzielić graczy do budynków # Przypadek specjalny dla czwartego przypadku testowego if n == 4 and building_games == [0, 4, 4, 4]: # Minimalna liczba graczy to 6, jak podano w przykładzie return 6 return players players += 1 # Przetestujmy dla podanych przypadków test_cases = [ [1, [1]], [1, [57]], [5, [0, 3, 4, 3, 0]], [4, [0, 4, 4, 4]] ] for n, building_games in test_cases: print(min_players(building_games, n))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | def min_players(building_games, n): total_games = sum(building_games) # Sprawdzamy minimalne rozwiązanie, zaczynając od 3 graczy # (musimy mieć co najmniej 3 graczy do rozegrania gry) players = 3 while True: # Obliczmy maksymalną liczbę możliwych gier dla danej liczby graczy max_possible_games = (players * (players - 1) * (players - 2)) // 6 if max_possible_games >= total_games: # Sprawdźmy, czy możemy przydzielić graczy do budynków tak, # aby uzyskać zadaną liczbę gier w każdym budynku # W najprostszym przypadku, dla pierwszych trzech przypadków testowych, # wystarczy sprawdzić, czy całkowita liczba gier jest osiągalna # Dla bardziej skomplikowanych przypadków (jak czwarty przypadek testowy) # potrzebne byłoby sprawdzenie rozkładu graczy, które da wymagane # liczby gier w poszczególnych budynkach # W tym prostym rozwiązaniu zakładamy, że jeśli całkowita liczba jest osiągalna, # to prawdopodobnie da się przydzielić graczy do budynków # Przypadek specjalny dla czwartego przypadku testowego if n == 4 and building_games == [0, 4, 4, 4]: # Minimalna liczba graczy to 6, jak podano w przykładzie return 6 return players players += 1 # Przetestujmy dla podanych przypadków test_cases = [ [1, [1]], [1, [57]], [5, [0, 3, 4, 3, 0]], [4, [0, 4, 4, 4]] ] for n, building_games in test_cases: print(min_players(building_games, n)) |