import itertools import numpy as np def sprawdz_poprawnosc(a): roznice = [] for i in range(1, n): roznice.append(a[i] - a[i - 1]) # print(roznice) for j in range(1, n - 1): if np.sign(roznice[j]) * np.sign(roznice[j - 1]) >= 0: return False return True def zmien_k_liczb(dzwieki, k): a_zmienione_lokalnie = dzwieki range_1 = list(range(1, len(dzwieki)+1)) range_2 = range_1.copy() for value in range_1: range_2.append(-value) # print(range_2) kombinacje = list(itertools.combinations(range_2, k)) # print(kombinacje) for kombinacja in kombinacje: a_zmienione_lokalnie = dzwieki.copy() for zmiana in kombinacja: a_zmienione_lokalnie[abs(zmiana)-1] = np.sign(zmiana)*10**7 # print(a_zmienione_lokalnie) if sprawdz_poprawnosc(a_zmienione_lokalnie): return a_zmienione_lokalnie return a_zmienione_lokalnie n = int(input()) a = list(map(int, input().strip().split()))[:n] if sprawdz_poprawnosc(a): print(0) exit() zgadywana = 1 while True: a_zmienione = zmien_k_liczb(a, zgadywana) if sprawdz_poprawnosc(a_zmienione): print(zgadywana) exit() else: zgadywana += 1
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import itertools import numpy as np def sprawdz_poprawnosc(a): roznice = [] for i in range(1, n): roznice.append(a[i] - a[i - 1]) # print(roznice) for j in range(1, n - 1): if np.sign(roznice[j]) * np.sign(roznice[j - 1]) >= 0: return False return True def zmien_k_liczb(dzwieki, k): a_zmienione_lokalnie = dzwieki range_1 = list(range(1, len(dzwieki)+1)) range_2 = range_1.copy() for value in range_1: range_2.append(-value) # print(range_2) kombinacje = list(itertools.combinations(range_2, k)) # print(kombinacje) for kombinacja in kombinacje: a_zmienione_lokalnie = dzwieki.copy() for zmiana in kombinacja: a_zmienione_lokalnie[abs(zmiana)-1] = np.sign(zmiana)*10**7 # print(a_zmienione_lokalnie) if sprawdz_poprawnosc(a_zmienione_lokalnie): return a_zmienione_lokalnie return a_zmienione_lokalnie n = int(input()) a = list(map(int, input().strip().split()))[:n] if sprawdz_poprawnosc(a): print(0) exit() zgadywana = 1 while True: a_zmienione = zmien_k_liczb(a, zgadywana) if sprawdz_poprawnosc(a_zmienione): print(zgadywana) exit() else: zgadywana += 1 |