Nemzetközi Informatikai Olimpia 1995

Eindhoven, Hollandia



Téglalapok elhelyezése - 1. Nap, 1. feladat (# pont, időlimit: # mp)

(négy téglalap elhelyezésének alapesetei)

Feladat:

Adott négy téglalap. Találja meg azt a legkisebb (új) téglalapot, amelybe ez a négy átfedés nélkül belefér. A legkisebb téglalapon a legkisebb területű téglalap értendő.
A négy téglalap oldalainak párhuzamosnak kell lennie a befoglaló téglalap oldalaival. A fenti ábra a téglalapok hat lehetséges elhelyezését mutatja be. Ez a hat lehetőség csak alaphelyzet, mivel tetszőleges elhelyezések kialakíthatóak a téglalapok forgatásával, tükrözésével.
Lehetséges, hogy több, azonos területű, a feltételeknek megfelelő befoglaló téglalap is van. Ilyenkor az összes téglalapot meg kell mutatnia!
Bemenet:
A bemenő állomány (INPUT.TXT) négy sort tartalmaz. Minden sor egy-egy téglalapot ír le két egész számmal: a téglalap oldalainak hosszával.
A téglalap minden oldala minimum 1, maximum 50 egység.
Kimenet:
A kimenő állománynak (OUTPUT.TXT) eggyel több sort kell tartalmaznia, mint a megoldások száma. Az első sor egy egész számot tartalmaz: a legkisebb befoglaló téglalap területe (A részfeladat). Minden ezt követő sor egy-egy megoldást tartalmaz két számmal leírva; p és q, ahol p<=q (B részfeladat). Ezeknek a soroknak p szerint növekvő sorrendben kell állnia, és minden sornak különbözőnek kell lennie.
Példa:
 
INPUT.TXT OUTPUT.TXT
1 2
2 3
3 4
4 5
40
4 10
5 8


Vásárlási tanácsadó - 1. Nap, 2. feladat (# pont, időlimit: # mp)
Egy boltban minden terméknek ára van. Például egy virág 2 IPE-be (Informatikai Pénzegység) kerül, míg egy váza 5 IPE-be. A bolt néhány
különleges akcióval próbál meg még több vevőt szerezni.

Az akció során ha valaki egy vagy több termékből többet vásárol, kedvezményt kap. Például: három virág 6 IPE helyett csak 5-be kerül, míg
két váza és egy virág 12 helyett 10 IPE-ért kapható.

Feladat:

Írjon programot, ami kiszámolja, hogy a vevőnek, az akciók legjobb kihasználása mellett, mennyit kell fizetni bizonyos tárgyakért. Ennek az árnak a lehető legalacsonyabbnak kell lennie. A program nem adhat a vevő tárgyaihoz újabbakat, még akkor sem, ha így alacsonyabb jönne ki.

Például a fenti példában látható három virágért és két vázáért a (legalacsonyabb) ár 14 IPE: két váza és egy virág akciós ára 10 IPE, míg két virág ára 4 IPE.

Bemenet:
A bemenő adatok két állományban találhatóak: INPUT.TXT és OFFER.TXT. Az első a vásárlást tartalmazza (a bevásárlókosár tartalmát), míg a második a különleges akciókat írja le. Mindkét állományban csak egész számok szerepelnek.

Az INPUT.TXT állomány első sora a kosárban lévő különböző termékfajták számát (b) tartalmazza (0<=b<=5). A következő b sor mindegyike három számot tartalmaz: c, k, és p. C a termékfajta (egyedi) azonosító kódja (1<=c<=999). K a termékfajtából a kosárban lévő termékek darabszáma (1<=k<=5). P a termék eredeti egységára (1<=p<=999). Vagyis a kosárban összesen 5*5=25 termék lehet.

Az OFFER.TXT első sora (s) a különleges akciók számát tartalmazza (0<=s<=99). A következő s sor egy-egy akció felépítését és kedvezményes árát írja le. Minden ilyen sor első száma (n) az akcióban résztvevő termékfajták számát tartalmazza (1<=n<=5). A következő n számpárosban (c,k) c a termékkód (1<=c<=999), míg k azt mutatja meg, hogy a termékből az akcióban hány darab szerepel (1<=k<=5). A sor végén álló p szám az akciós árat tartalmazza (1<=p<=9999). Az akciós árnak alacsonyabbnak kell lennie, mint az akcióban résztvevő termékek ára összesen.

Kimenet:
A kimenő állomány (OUTPUT.TXT) egy sorból áll, amiben a bemenő állományban összeállított vásárlásért fizetendő legalacsonyabb ár szerepel.
Példa:
 
INPUT.TXT OFFER.TXT OUTPUT.TXT
2
7 3 2
8 2 5
2
1 7 3 5
2 7 1 8 2 10
14


Nyomtatás - 1. Nap, 3. feladat (# pont, időlimit: # mp)
A feladat leírása rendkívül körülményes, ha elég idő áll rendelkezésemre, pótolom.

Feladat:

 
Bemenet:
 
Kimenet:
 
Korlátok:
 
Példa: