Programozó versenyek

Magas szintű programozási nyelvek 1, egyéni verseny, 2014. április 13.

2014. április 13. 10:15 – 2014. április 13. 15:15

Társkeresés

A társkeresés nehéz munka, ráadásul a hosszú távú sikeressége (egy boldog család) két olyan emberen múlik, akik gyakran nem is vesznek részt a társkeresés folyamatában. Manapság az olyan weboldalak, mint a Facebook vagy a Twitter, illetve az olyan kommunikációs eszközök és szoftverek, mint a mobiltelefonok és az üzenetküldő alkalmazások állástalanokká tették a hivatásos társkeresőket. Ezek a dühös és állástalan társkeresők ezért összefogtak, hogy elfogadtassanak egy törvényt a parlamenttel, amely megtiltja az embereknek, hogy megválaszthassák az élettársukat. A törvény így szól:

Egy bizonyos közösség legidősebb agglegényének a korban hozzá legközelebb álló hajadont kell feleségül vennie. A második legidősebb agglegény aztán azt a hajadont veszi el, aki korban a legközelebb áll hozzá (ha több ilyen is van, akkor természetesen bármelyiket választhatja), nem számítva azt a hajadont, aki már férjhez ment. Ez a folyamat addig folytatódik, amíg nem marad agglegény vagy hajadon. Egy agglegény természetesen nem vehet el két hajadont, mint ahogy egy hajadon sem mehet férjhez két agglegényhez. Legyen például egy közösségben négy agglegény, akik 21, 25, 26, illetve 2 évesek, és négy hajadon, akik 23, 24, 25 és 35 évesek. Az alábbi ábra szemlélteti a házasságok egyetlen lehetséges módját (a 26 éves agglegény elveszi a 25 éves hajadont, és így tovább):

A feladatod, hogy ha adott egy közösség agglegényeinek és hajadonjainak az életkora, határozd meg, hogy hány agglegény marad, miután minden házasság megtörtént a fenti törvény alapján. Meg kell mondanod a közösségben maradó legfiatalabb agglegény életkorát is, ha van ilyen.

A bemenet specifikációja

A bemenet legfeljebb 25 tesztesetből áll. Az egyes tesztesetek leírása a következő:

Minden teszteset első sora két egész számot tartalmaz: B-t (0 < B < 10000) és S-et (0 < S < 10000), amelyek rendre a közösség agglegényeinek és hajadonjainak a számát jelölik. A következő B sor mindegyike egyetlen egész számot tartalmaz 2 és 60 között, amely a közösség egy agglegényének az életkorát adja meg. A következő S sor mindegyike egyetlen egész számot tartalmaz 2 és 60 között, amely a közösség egy hajadonjának az életkorát jelöli. Az egyszerűség kedvéért ebben a feladatban nem okoz problémát, ha valaki nagyon alacsony életkorban házasodik. Ez azt jelenti, hogy a nem házas embereket életkoruktól függetlenül érvényes agglegénynek, illetve hajadonnak tekintjük.

A bemenetet egy olyan sor zárja, amely két nullából áll.

A kimenet specifikációja

A bemenet minden sorára egy sort kell a kimenetre írni, amely a teszteset sorszámát követően egy vagy két egész számot tartalmaz. Az első szám a közösségben maradó agglegények számát adja meg, miután minden potenciális házasság megtörtént. Ha ez az érték nem nulla, egy második egész számot is ki kell írni, amely a közösségben maradó legfiatalabb agglegény életkorát adja meg, miután minden lehetséges házasság megtörtént. Lásd a példa bemenethez tartozó kimenetet a részletes formátumért.

Példa bemenet

  1. 4 4
  2. 26
  3. 25
  4. 2
  5. 21
  6. 35
  7. 25
  8. 23
  9. 24
  10. 1 2
  11. 20
  12. 30
  13. 40
  14. 4 2
  15. 5
  16. 5
  17. 10
  18. 15
  19. 20
  20. 18
  21. 0 0
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. Case 1: 0
  2. Case 2: 0
  3. Case 3: 2 5
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.