II Olimpiada Informatyczna 1994/95
|
Zadanie: SZE
|
Autor: Marcin Jurdziński
|
Szeregowanie czynności
Plik źródłowy | SZE.??? (np. PAS,C, CPP) |
Plik wykonywalny | SZE.EXE |
Plik wejściowy | SZE.IN |
Plik wyjściowy | SZE.OUT |
Danych jest n niezależnych i niepodzielnych czynności, ponumerowanych
od 1 do n. Należy je wykonać sekwencyjnie w dowolnej kolejności. Wykonanie
każdej czynności trwa tym dłużej im później ją rozpoczniemy - ściśle czas
wykonania czynności i wynosi hi(t) = ait + bi, jeśli rozpoczniemy ją w chwili t.
Zakładamy, że 0 <= ai <= 1, 0 <= bi <= 1.
Należy uszeregować czynności w takiej kolejności, aby łączny czas ich
wykonania był najmniejszy.
Zadanie
Napisz program, który:
- wczytuje z pliku tekstowego SZE.IN liczbę czynności n nie większą niż 10000
oraz kolejno dla każdej czynności i - współczynniki ai oraz bi określające
zależność czasu wykonania tej czynności od chwili jej rozpoczęcia,
- znajduje takie uszeregowanie czynności, żeby łączny czas ich wykonania był
minimalny i zapisuje w pliku tekstowym SZE.OUT numery czynności w takiej
kolejności, w jakiej należy je wykonywać.
Wejście
- W pierwszym wierszu pliku SZE.IN jest zapisana jedna liczba całkowita
dodatnia nie większa niż 10000. Jest to liczba czynności n.
- W każdym z n kolejnych wierszy jest zapisana para liczb rzeczywistych
nieujemnych w standardowej notacji z kropką i sześcioma cyframi po kropce.
Są one oddzielone pojedynczym odstępem. Jest to para współczynników ai
oraz bi określających zależność czasu wykonania odpowiedniej i-tej czynności
od chwili jej rozpoczęcia.
Wyjście
W pliku SZE.OUT należy zapisać uszeregowanie czynności, to znaczy
odpowiednią permutację liczb 1, ..., n; każdą liczbę w osobnym wierszu.
Przykład
Dla pliku SZE.IN
5
0.002000 0.003000
0.016000 0.001000
0.100000 0.300000
0.016000 0.005000
0.030000 0.060000
w pliku SZE.OUT należy zapisać:
2
4
1
5
3
Twój program powinien szukać pliku SZE.IN w katalogu bieżącym i tworzyć
plik SZE.OUT również w bieżącym katalogu. Plik zawierający napisany przez
Ciebie program w postaci źródłowej powinien mieć nazwę SZE.???, gdzie zamiast
??? należy wpisać co najwyżej trzyliterowy skrót nazwy użytego języka
programowania. Ten sam program w postaci wykonywalnej powinien być zapisany
w pliku SZE.EXE.