JAK KTOŚ DA NA JUTRO DAM NAJ Dany jest ciąg liczb całkowitych dodatnich określający ceny akcji danej spółki na giełdzie w kolejnych dniach (na koniec każdego dnia). Chcemy stwierdzić, czy któregoś dnia cena akcji wynosiła dokładnie x. Jeśli był więcej niż jeden taki dzień, Twój program powinien wyznaczyć pierwszy i ostatni taki dzień. Wejście Pierwszy wiersz wejścia zawiera dwie liczby całkowite n oraz x (1 ≤ n ≤ 100 000, 1 ≤ x ≤ 109 ), oddzielone spacją i oznaczające liczbę kolejnych dni, przez które notowano ceny akcji danej spółki, oraz interesującą nas cenę akcji. Drugi wiersz zawiera n liczb całkowitych z zakresu od 1 do 109 , oddzielonych spacjami, oznaczających ceny akcji spółki w kolejnych dniach. Wyjście Twój program powinien wypisać dwie liczby oddzielone spacją. Pierwszą z nich powinien być numer pierwszego dnia (będący liczbą między 1 a n), którego cena akcji wynosiła dokładnie x. Drugą natomiast powinien być numer ostatniego takiego dnia. Jeśli był tylko jeden dzień, gdy cena akcji wynosiła x, obie liczby na wyjściu powinny być takie same. Jeśli cena x w ogóle nie wystąpiła, obie liczby powinny być równe −1. Przykład Dla danych wejściowych: 7 3 1 3 5 2 3 4 3 poprawnym wynikiem jest: 2 7 a dla danych wejściowych: 4 2 2 3 4 5 poprawnym wynikiem jest: 1 1 natomiast dla danych wejściowych: 3 2 5 3 1 poprawnym wynikiem jest: -1 -1
Rozwiązanie problemu polega na iterowaniu po ciągu liczb, aż do znalezienia pierwszej liczby równiej x lub do osiągnięcia końca ciągu. Jeśli znajdziemy pierwszą taką liczbę, zapisujemy jej indeks jako początek naszego wyniku. Następnie kontynuujemy iterowanie, aż do osiągnięcia końca ciągu lub znalezienia ostatniej liczby równiej x. W tym drugim przypadku zapisujemy indeks tej liczby jako koniec naszego wyniku.
Jeśli nie znaleźliśmy ani początku, ani końca wyniku, oznacza to, że nie ma w ciągu żadnej liczby równiej x, więc zwracamy (-1, -1).
Poniżej przedstawiam kod rozwiązujący ten problem w języku Python:
n, x = map(int, input().split())
prices = list(map(int, input().split()))
start = -1
end = -1
for i in range(n):
if prices[i] == x:
if start == -1:
start = i + 1
end = i + 1
if start == -1:
print("-1 -1")
else:
print(f"{start} {end}")
Najpierw wczytujemy dane wejściowe - liczbę dni n oraz cenę x. Następnie wczytujemy ciąg cen akcji spółki i przechowujemy go w liście prices.
Ustawiamy zmienne start i end na -1, co oznacza, że jeszcze nie znaleźliśmy początku ani końca wyniku.
Następnie iterujemy po liście prices, sprawdzając, czy każda cena jest równa x. Jeśli tak, to sprawdzamy, czy to jest pierwsza znaleziona cena równa x. Jeśli tak, to zapisujemy jej indeks jako początek wyniku. W każdym przypadku aktualizujemy koniec wyniku, ustawiając go na indeks aktualnej ceny.
Na końcu sprawdzamy, czy udało nam się znaleźć początek wyniku. Jeśli nie, to zwracamy (-1, -1). W przeciwnym razie zwracamy wynik w postaci (start, end).
Przykładowe wywołania funkcji:
n, x = 7, 3
prices = [1, 3, 5, 2, 3, 4, 3]
start = -1
end = -1
for i in range(n):
if prices[i] == x:
if start == -1:
start = i + 1
end = i + 1
if start == -1:
print("-1 -1")
else:
print(f"{start} {end}")
n, x = 4, 2
prices = [2, 3, 4, 5]
start = -1
end = -1
for i in range(n):
if prices[i] == x:
if start == -1:
start = i + 1
end = i
W takim przypadku iterujemy dalej po ciągu i szukamy ostatniego wystąpienia ceny x. Jeśli znajdziemy, ustawiamy zmienną last_day na aktualną wartość i.
Po przejściu całego ciągu, sprawdzamy czy znaleźliśmy jakieś wystąpienia ceny x. Jeśli tak, wypisujemy odpowiednio wartości first_day i last_day, jeśli nie, wypisujemy -1 -1.
Poniżej przedstawiony jest przykładowy kod rozwiązujący ten problem: n, x = map(int, input().split())
Rozwiązanie problemu polega na iterowaniu po ciągu liczb, aż do znalezienia pierwszej liczby równiej x lub do osiągnięcia końca ciągu. Jeśli znajdziemy pierwszą taką liczbę, zapisujemy jej indeks jako początek naszego wyniku. Następnie kontynuujemy iterowanie, aż do osiągnięcia końca ciągu lub znalezienia ostatniej liczby równiej x. W tym drugim przypadku zapisujemy indeks tej liczby jako koniec naszego wyniku.
Jeśli nie znaleźliśmy ani początku, ani końca wyniku, oznacza to, że nie ma w ciągu żadnej liczby równiej x, więc zwracamy (-1, -1).
Poniżej przedstawiam kod rozwiązujący ten problem w języku Python:
n, x = map(int, input().split())
prices = list(map(int, input().split()))
start = -1
end = -1
for i in range(n):
if prices[i] == x:
if start == -1:
start = i + 1
end = i + 1
if start == -1:
print("-1 -1")
else:
print(f"{start} {end}")
Najpierw wczytujemy dane wejściowe - liczbę dni n oraz cenę x. Następnie wczytujemy ciąg cen akcji spółki i przechowujemy go w liście prices.
Ustawiamy zmienne start i end na -1, co oznacza, że jeszcze nie znaleźliśmy początku ani końca wyniku.
Następnie iterujemy po liście prices, sprawdzając, czy każda cena jest równa x. Jeśli tak, to sprawdzamy, czy to jest pierwsza znaleziona cena równa x. Jeśli tak, to zapisujemy jej indeks jako początek wyniku. W każdym przypadku aktualizujemy koniec wyniku, ustawiając go na indeks aktualnej ceny.
Na końcu sprawdzamy, czy udało nam się znaleźć początek wyniku. Jeśli nie, to zwracamy (-1, -1). W przeciwnym razie zwracamy wynik w postaci (start, end).
Przykładowe wywołania funkcji:
n, x = 7, 3
prices = [1, 3, 5, 2, 3, 4, 3]
start = -1
end = -1
for i in range(n):
if prices[i] == x:
if start == -1:
start = i + 1
end = i + 1
if start == -1:
print("-1 -1")
else:
print(f"{start} {end}")
n, x = 4, 2
prices = [2, 3, 4, 5]
start = -1
end = -1
for i in range(n):
if prices[i] == x:
if start == -1:
start = i + 1
end = i
W takim przypadku iterujemy dalej po ciągu i szukamy ostatniego wystąpienia ceny x. Jeśli znajdziemy, ustawiamy zmienną last_day na aktualną wartość i.
Po przejściu całego ciągu, sprawdzamy czy znaleźliśmy jakieś wystąpienia ceny x. Jeśli tak, wypisujemy odpowiednio wartości first_day i last_day, jeśli nie, wypisujemy -1 -1.
Poniżej przedstawiony jest przykładowy kod rozwiązujący ten problem:
n, x = map(int, input().split())
prices = list(map(int, input().split()))
first_day = -1
last_day = -1
for i in range(n):
if prices[i] == x:
if first_day == -1:
first_day = i + 1
last_day = i + 1
if first_day != -1:
print(first_day, last_day)
else: