Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2025
Znany w podziemiu netrunner o pseudonimie Bajtazar stworzył absolutnie przełomowy exploit (tzw. B-day), który pozwala na ominięcie ICE największych megakorporacji. Bajtazar postanowił zmonetyzować swoje dzieło i sprzedawać do niego dostęp w modelu subskrypcyjnym na anonimowym forum w Barknecie.
Na forum znajduje się N potencjalnych kupców. Każdy z nich ma swój określony budżet i jest w stanie zapłacić maksymalnie ci kryptokredytów za dostęp.
Bajtazar musi ustalić jedną sztywną cenę P dla wszystkich. Jeśli ustalona cena będzie wyższa niż maksymalny budżet danego kupca (P > ci), ten zrezygnuje z zakupu. W przeciwnym razie kupiec nabywa subskrypcję. Bajtazar chce ustalić taką cenę P, aby zsumowany zysk C (C = P× ile osób kupi subskrypcję) kupców był jak największy.
Pomóż mu obliczyć maksymalny możliwy zysk C oraz cenę P, która go daje. Jeśli istnieje kilka cen dających ten sam maksymalny zysk C, wybierz najniższą z nich.
Wejście
W pierwszym wierszu znajduje się jedna liczba całkowita N.
W drugim wierszu znajduje się N liczb całkowitych c1, c2, …, cN
oddzielonych pojedynczymi odstępami, oznaczających maksymalny budżet
poszczególnych kupców.
Wyjście
Twój program powinien wypisać dwie liczby całkowite oddzielone spacją: Maksymalny zysk C, jaki może osiągnąć Bajtazar oraz optymalną cenę subskrypcji P dającą ten zysk. Jeśli istnieje kilka cen dających ten sam maksymalny zysk C, wybierz najniższą z nich.
Ograniczenia
1 ≤ N ≤ 106, 1 ≤ ci ≤ 106
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | ci ≤ 1 000 | 20 |
| 2 | N ≤ 1 000 | 20 |
| 3 | brak dodatkowych ograniczeń | 60 |
Przykład
| Wejście | Wyjście | Wyjaśnienie |
|
|
Przy cenie równej 4 produkt kupią trzy osoby (te z budżetem 4, 6 i 6), co daje maksymalny zysk 12 (4 ⋅ 3). Ten sam zysk osiągniemy przy cenie 6 (6 ⋅ 2), jednak zgodnie z poleceniem w przypadku remisu wybieramy najniższą kwotę, dlatego poprawny wynik to zysk 12 przy cenie 4. |
| Wejście | Wyjście | |
|
|
| Wejście | Wyjście | |
|
|
W królestwie Bajtii wznosi się pasmo majestatycznych gór. Składa się ono z N szczytów, ponumerowanych od 1 do N z zachodu na wschód. Szczyt o numerze i ma wysokość Hi metrów.
Młody czarodziej Bajtazar testuje swój nowo utkany artefakt – Magiczny Dywan. Artefakt ten pozwala mu przemieszczać się w powietrzu, zużywając magiczną energię (manę). W każdej sekundzie lotu Bajtazar wykonuje dwie akcje jednocześnie:
- Ruch w poziomie: Bajtazar wybiera jedną z trzech
opcji:
- Przemieszcza się na pozycję sąsiedniego wschodniego szczytu, zmieniając pozycję poziomą z i na i + 1.
- Przemieszcza się na pozycję sąsiedniego zachodniego szczytu, zmieniając pozycję poziomą z i na i − 1.
- Zatrzymuje się w miejscu (nie zmienia pozycji w poziomie).
- Zmiana wysokości: Równolegle z ruchem poziomym,
dywan zmienia swoją wysokość:
- Wzniesienie się o jeden metr (kosztuje 4 jednostki many).
- Opadnięcie o jeden metr (kosztuje 1 jednostkę many – dywan wspomaga się grawitacją).
- Utrzymanie wysokości (kosztuje 2 jednostki many, by przeciwstawić się ciążeniu).
Oczywiście, Bajtazar musi unikać zderzenia ze skałami – w każdym momencie, gdy znajduje się nad szczytem i, jego wysokość musi wynosić co najmniej Hi.
Wielki Mag Bajtii zlecił Bajtazarowi dostarczenie Q ważnych zwojów. Podczas j-tej misji Bajtazar startuje dokładnie ze szczytu góry Sj i musi wylądować idealnie na szczycie góry Tj. Ponieważ regeneracja many trwa bardzo długo, Bajtazar chce zużyć jej jak najmniej. Pomóż mu obliczyć minimalną ilość many wymaganą dla każdej z misji!
Wejście
W pierwszym wierszu wejścia znajduje się jedna liczba całkowita N, oznaczająca liczbę górskich
szczytów.
W drugim wierszu znajduje się N liczb całkowitych H1, H2, …, HN
oddzielonych pojedynczymi odstępami, oznaczających wysokości kolejnych
szczytów w metrach. W trzecim wierszu wejścia znajduje się jedna liczba
całkowita Q, oznaczająca
liczbę zapytań. W kolejnych Q
wierszach znajdują się opisy poszczególnych misji. W j-tym z tych wierszy podane są dwie
liczby całkowite Sj oraz Tj, oznaczające
odpowiednio numer szczytu startowego i docelowego.
Wyjście
Twój program powinien wypisać na standardowe wyjście dokładnie Q wierszy. W j-tym wierszu powinna znaleźć się jedna liczba całkowita – minimalna liczba jednostek many niezbędna do wykonania lotu ze szczytu Sj na szczyt Tj.
Ograniczenia
2 ≤ N, Q ≤ 200 000, 1 ≤ Hi ≤ 109, 1 ≤ Sj, Tj ≤ N
Ocenianie
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | Sj + 1 = Tj | 5 |
| 2 | Hi = i | 6 |
| 3 | N, Q, Hi ≤ 100 | 18 |
| 4 | N, Q ≤ 1 000 | 24 |
| 5 | Sj = 1 | 20 |
| 6 | brak dodatkowych ograniczeń | 27 |
Przykład
| Wejście | Wyjście | Wyjaśnienie |
|
|
Lot z pierwszym zwojem: Start z góry 1 (wysokość 9). Przelot nad górę 2 ze spadkiem o jeden metr (koszt: 1). Przelot nad górę 3 z utrzymaniem wysokości (koszt: 2). Łącznie: 1 + 2 = 3 jednostki many. Lot z drugim zwojem: Start z góry 4 (wysokość 2). Wzniesienie w miejscu o pięć metrów (koszt: 5 ⋅ 4 = 20). Przelot nad górę 3 ze wzniesieniem o jeden metr (koszt: 4). Przelot nad górę 2 ze spadkiem o jeden metr (koszt: 1). Opadnięcie w miejscu o sześć metrów (koszt: 6 ⋅ 1 = 6). Łącznie: 20 + 4 + 1 + 6 = 31 jednostek many. Lot ze zwojem nr 1 i 2: |
| Wejście | Wyjście | |
|
|
| Wejście | Wyjście | |
|
|
Bajtek ma planszę rozmiaru N × N podzieloną na N 2 pól. K prostokątnych obszarów na planszy jest pomalowanych na czarno, reszta planszy jest pomalowana na biało. Prostokątne obszary mają boki równoległe do boków planszy i przebiegające wzdłuż linii podziału planszy – każde pole planszy jest w obszarze albo w całości, albo wcale. Obszary nie przecinają się ze sobą. Wiersze i kolumny planszy są ponumerowane liczbami od 1 do N – wiersze od góry do dołu, a kolumny od lewej do prawej.
Planszę nazywamy szachownicą, jeżeli można ją podzielić na identyczne kwadraty o boku nie mniejszym od 1 i ściśle mniejszym od N, w taki sposób, że wszystkie pola wewnątrz każdego z tych kwadratów są tego samego koloru, a dwa sąsiednie kwadraty mają różne kolory. Dwa kwadraty nazywamy sąsiednimi, jeżeli mają wspólny bok. Poniżej pokazane są wszystkie możliwe szachownice dla N = 6:
Bajtek chce zamienić swoją planszę w szachownicę. W tym celu może on przemalowywać pola – jeśli pole było białe, po przemalowaniu staje się czarne i na odwrót. Pomóż Bajtkowi wyznaczyć najmniejszą liczbę przemalowań, jakich musi on dokonać, aby plansza stała się szachownicą.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby całkowite N i K – rozmiar planszy oraz liczba czarnych prostokątnych obszarów.
W każdym z kolejnych K wierszy znajdują się cztery liczby całkowite x1, y1, x2, y2 oddzielone pojedynczymi odstępami – odpowiednio numer wiersza i kolumny lewego górnego pola oraz numer wiersza i kolumny prawego dolnego pola prostokątnego obszaru.
Możesz założyć, że żadne dwa obszary się nie przecinają.
Wyjście
Twój program powinien wypisać jedną liczbę całkowitą – najmniejszą liczbę przemalowań potrzebnych, aby plansza stała się szachownicą.
Ograniczenia
2 ≤ N ≤ 105.
0 ≤ K ≤ min (N 2,105).
1 ≤ x1 ≤ x2 ≤ N,
1 ≤ y1 ≤ y2 ≤ N.
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | N ≤ 100, K = 0 | 8 |
| 2 | N jest liczbą pierwszą, pole każdego obszaru wynosi 1 | 8 |
| 3 | N ≤ 100, K ≤ 1000, pole każdego obszaru wynosi 1 | 15 |
| 4 | N ≤ 1000, pole każdego obszaru wynosi 1 | 16 |
| 5 | pole każdego obszaru wynosi 1 | 23 |
| 6 | brak dodatkowych ograniczeń | 30 |
Przykład
| Wejście | Wyjście | Wyjaśnienie |
|
|
Optymalne przemalowania dla wszystkich testów przykładowych znajdują się poniżej. |
| Wejście | Wyjście | |
|
|
| Wejście | Wyjście | |
|
|