Zadanie E: Autostrada

Transkrypt

Zadanie E: Autostrada
#include <stdio.h>
main() { int i;
int j; i=0;
while(++i<100){
for (j=0; j<10; j++)
printf("%i\n",i);}}
var s,n:integer;
begin readln(n);
s:=1;
while n>1 do
s:=s*n;
end.
Wielka Przesmycka
Wrocław, 11 kwietnia 2015
Zadanie E: Autostrada
Tuż po uroczystym otwarciu pierwszej autostrady (nazwanej Autostradą) we Flatlandii okazało się, że całkiem
zapomniano o zaplanowaniu jakichkolwiek dróg dojazdowych. Mało tego: cała autostrada jest ogrodzona wysokim murem, więc w tej chwili nikt nie może z niej korzystać! Jak łatwo się domyślić, niezbyt ucieszyło to mieszkańców pobliskich n wiosek. Ku ich zaskoczeniu, ministerstwo transportu przyznało się do swojego niedopatrzenia i w ekspresowym terminie wydało zgodę na utworzenie co najwyżej k wjazdów na nowo wybudowaną autostradę. Pozostaje jednak kwestia wybrania miejsc, w
których należy je utworzyć. Mieszkańcy zgodnie stwierdzili, że chcieliby wybrać wjazdy tak, aby zminimalizować
sumę odległości mieszkańców do autostrady, gdzie odległość mieszkańca do autostrady to odległość jego wioski
do najbliższego wjazdu. Dziwnym zbiegiem okoliczności
wszyscy mieszkańcy pracowali przez kilka lat jako taksówkarze w Nowym Yorku, w związku z tym przez odległość między punktem (x, y) a (x0 , y 0 ) rozumieją wartość
|x − x0 | + |y − y 0 |, gdzie || oznacza wartość bezwzględną
(czyli liczą odległość w metryce taksówkarza).
Autostrada jest prostą opisaną przez równanie y =
ax+b. i-ta z wiosek znajduje się w punkcie (xi , yi ) i mieszka w niej dokładnie wi mieszkańców. Każdy z wjazdów
na autostradę musi być punktem na prostej y = ax + b (o
niekoniecznie całkowitych współrzędnych). Jaka jest najmniejsza możliwa suma odległości mieszkańców od autostrady po utworzeniu co najwyżej k wjazdów?
Test
Program powinien czytać dane z wejścia standardowego.
W pierwszym wierszu podana jest liczba Z ¬ 40 oznaczająca liczbę zestawów testowych, które są opisane w kolejnych wierszach. Każdy z zestawów jest zgodny ze specyfikacją podaną w części Jeden zestaw danych. Program
powinien wypisywać wyniki na wyjście standardowe. Wyniki dla poszczególnych zestawów powinny być zgodne ze
specyfikacją opisaną w części Wynik dla jednego zestawu
i należy je wypisać w takiej kolejności, w jakiej zestawy
występują na wejściu.
W
A
LK
I E
M Y C K A
E S
Z
R
P
Ograniczenia danych
Wspólne: : a ∈ [−100, 100], b ∈ [−109 , 109 ], xi , yi ∈
[−109 , 109 ] oraz wi ∈ [1, 100] dla każdego i =
1, 2, . . . , n.
Basic (e): n, k ¬ 100.
Professional (E): n ¬ 1000, k ¬ 109 .
Wynik dla jednego zestawu
W pierwszym i jedynym wierszu wyniku należy wypisać
jedną liczbę rzeczywistą, będącą najmniejszą możliwą sumą odległości mieszkańców do autostrady po utworzeniu
co najwyżej k wjazdów na podanej autostradzie. Za poprawną zostanie uznana odpowiedź, która różni się od
wzorcowej o co najwyżej 0.01.
Przykład
Wejście
4
0 0
3 1
-10 10 1
0 10 1
10 10 1
1 0
3 2
6 5 4
0 2 1
2 -1 1
0 4
6 3
-2 4 6
2 6 1
3 2 1
4 6 1
5 2 1
6 0 1
97 0
1 1
23 32 99
Wyjście
50.00
9.00
15.00
2244.34
Jeden zestaw danych
W pierwszym wierszu wejścia znajdują się dwie liczby
całkowite a i b oddzielone pojedynczą spacją, które definiują autostradę y = ax + b. W drugim wierszu znajdują się dwie liczby całkowite dodatnie n i k oddzielone
pojedynczą spacją, które oznaczają liczbę wiosek i maksymalną liczbę wjazdów. W kolejnych n wierszach znajdują się opisy kolejnych wiosek. Opis i-tej wioski składa się z trzech liczb całkowitych xi , yi i wi oddzielonych
pojedynczymi spacjami, gdzie (xi , yi ) oznacza położenie
wioski, a wi liczbę jej mieszkańców.
Zadanie E: Autostrada
1/1