Nemzetközi Informatikai Diákolimpia 1992

Bonn, Németország



2. napi feladat (100 pont)
Egy hegymászóklubnak P (1<=P<=20) tagja van, a tagokat 1-től P-ig számozzuk. Az összes klubtag egyforma sebességgel mászik, és nincs különbség a felfelé és lefelé mászás sebessége között. Az i. hegymászó C(i) mennyiségű élelmet fogyaszt naponta, és legfeljebb S(i) mennyiségű élelmet képes magával vinni. Az összes C(i) és S(i) egész szám.

Tegyük fel, hogy egy hegymászónak elegendő élelemmel felszerelkezve N (1<=N<=100) napra van szüksége, hogy felérjen a hegy csúcsára. A hegy olyan magas is lehet, hogy egyetlen hegymászó nem tudja elvinni a számára feltétlen szükséges mennyiségű élelmet. Ezért egy egész hegymászó csoport indul útnak ugyanarról a helyről és ugyanabban az időpontban. Az a hegymászó, aki a csúcs elérése előtt már elindul visszafelé, a számára felesleges élelmet átadja a többieknek. A hegymászók nem pihennek a túrán.

Feladat:

A feladat egy túraterv összeállítása a hegymászóklub számára. Legalább egy hegymászónak fel kell jutnia a csúcsra, és a kiválasztott csoport összes tagjának vissza kell érnie az induló állomásra!

Írj programot, amely végrehajtja az alábbi részfeladatokat:

1. Beolvassa a billentyűzetről a csúcsra való feljutáshoz szükséges napok számát (N), a klub tagjainak számát (P) és az egyes hegymászók napi élelemszükségletét (C(i)), valamint teherbírását (S(i)). A beolvasott adatok biztosan egész számok (ezt tehát nem kell vizsgálni), az értelmetlen egészeket a program ne fogadja el!

2. Megpróbál összeállítani egy túratervet a hegy megmászására. Ehhez ki kell választaniaegy megfelelő a(1), ..., a(k) hegymászócsoportot a klubtagok közül, akik részt vesznek a túrán, valamint mindegyik résztvevőre azt az M(j) élelmiszermennyiséget, amivel az a(j). hegymászónak útra kell kelnie. (Előfordulhat, hogy nem lehet túratervet készíteni az N, az S(i) és a C(i) összes kombinációjára.)

3. Írja ki a következő információkat a képernyőre:

a. a túrán ténylegesen résztvevő hegymászók k számát,
b. az összesen szükséges élelmiszermennyiséget,
c. a hegymászók a(1), ..., a(k) sorszámát,
d. az összes résztvevő hegymászóra a kezdeti élelmiszermennyiséget, amit induláskor magukkal kell vinniük,
e. minden résztvevő hegymászóra azt a napot, amikor vissza kell fordulnia
4. Egy túraterv akkor optimális, ha
a. a túrán résztvevő csoportban a hegymászók száma minimális, és
b. az a. feltételt kiegészítő csoportok közül az indul, amelyik a lehető legkevesebb élelmiszert fogyasztja el.
Keress közel optimális túratervet (nem feltétlenül cél az optimális megtalálása)!
Példa:
A program a következőhöz hasonló párbeszédet folytasson kezelőjével.
 
Program Kezelő
A csúcsra feljutáshoz szükséges napok száma: 4
A klub tagjainak száma: 5
A(z) 1. hegymászó által vihető élelem mennyisége: 7
A(z) 1. hegymászó napi élelmiszerigénye: 1
A(z) 2. hegymászó által vihető élelem mennyisége: 8
A(z) 2. hegymászó napi élelmiszerigénye: 2
A(z) 3. hegymászó által vihető élelem mennyisége: 12
A(z) 3. hegymászó napi élelmiszerigénye: 2
A(z) 4. hegymászó által vihető élelem mennyisége: 15
A(z) 4. hegymászó napi élelmiszerigénye: 3
A(z) 5. hegymászó által vihető élelem mennyisége: 7
A(z) 5. hegymászó napi élelmiszerigénye: 1
Eredmény:
A túrán 2 hegymászó vegyen részt, a teljes élelmiszermennyiség 10 legyen!
A(z) 1., 5. hegymászó induljon!
A(z) 1. hegymászó által viendő élelmiszer mennyisége 7, és 4 nap után induljon visszafelé!
A(z) 5. hegymászó által viendő élelmiszer mennyisége 3, és 1 nap után induljon visszafelé!
Program Kezelő
Készítsek újabb túratervető (I/N) I
A csúcsra feljutáshoz szükséges napok száma: 2
A klub tagjainak száma: 1
A(z) 1. hegymászó által vihető élelem mennyisége: 3
A(z) 1. hegymászó napi élelmiszerigénye: 2
Eredmény:
A hegyet nem lehet megmászni.
Program Kezelő
Készítsek újabb túratervető (I/N) N