Programozó versenyek

DEIK Regionális Programozó Csapatverseny, nyílt kategória, 2018. december 9.

2018. december 9. 10:20 – 2018. december 9. 15:20

J — Ki vagy rúgva!

A Pump Szervezet legutóbbi negyedéves jelentése egyáltalán nem tűnik ígéretesnek: a költségek elszabadultak, míg a bevétel 42%-kal csökkent. Miután jobban megnézte a számokat, Dagobert J. Pump vezérigazgató arra a következtetésre jutott, hogy csak úgy mentheti meg a vállalatot, ha elbocsátja néhány alkalmazottját.

A probléma csak az, hogy Pump igazgató nemrég azt állította egy interjúban, hogy „ő a valaha élt legnagyobb munkahelyteremtő”. Ha tehát túl sok embertől válna meg, a becstelen, korrupt baloldali média nyilván beszámolna róla, és ezzel igencsak megbízhatatlannak állítaná be őt. A Pump Szervezet PR-szakemberei már meg is becsülték, hogy Pump igazgató hány dolgozótól szabadulhat meg anélkül, hogy felkeltené a média érdeklődését. A biztonság kedvéért Pump igazgató úgy döntött, hogy a lehető legkevesebb alkalmazottat rúgja ki.

Figyelembe véve a vállalat összes dolgozóját és a fizetésüket, Pump igazgatónak legalább d dollárt kell megtakarítania legfeljebb k alkalmazott elbocsátásával. Ha ez megvalósítható, Pump igazgató mindegyikükkel személyesen szeretné közölni: KI VAN RÚGVA!

A bemenet specifikációja

A bemenet az alábbiakból tevődik össze:

  • egy sor az n, d és k egész számokkal, ahol
    • n (1 ≤ n ≤ 10 000) a Pump Szervezet alkalmazottainak száma;
    • d (1 ≤ d ≤ 109) az az összeg, amennyit Pump igazgatónak minimálisan meg kell takarítania;
    • k (1 ≤ k ≤ n) azon dolgozók maximális száma, akiktől Pump igazgató megválhat anélkül, hogy felkeltené a média érdeklődését;
  • n sor, amelyek mindegyike egy si sztringet és egy ci egész számot tartalmaz, ahol
    • si (1 ≤ |si| ≤ 7) az i-edik dolgozó neve;
    • ci (1 ≤ ci ≤ 100 000) az i-edik dolgozó fizetése.

Mindegyik si különböző, és csak az angol ábécé kis- és nagybetűit tartalmazza.

A kimenet specifikációja

Ha nincs mód arra, hogy megtakarítsunk legalább d dollárt legfeljebb k alkalmazott kirúgásával, akkor az „impossible” szót kell a kimenetre írni.

Ha van mód arra, hogy megtakarítsunk legalább d dollárt legfeljebb k alkalmazott kirúgásával, akkor a kimenetet az alábbiak szerint kell összeállítani:

  • egy sor, amely egyetlen x egész számot tartalmaz (1 ≤ x ≤ k), ahol x az elbocsátandó emberek száma;
  • x sor, mindegyik az „si, YOU ARE FIRED!” szöveggel, ahol si az i-edik elbocsátandó alkalmazott neve.

Több jó megoldás esetén bármelyik megadható.

1. példa bemenet

  1. 5 2000 3
  2. John 999
  3. Lyndon 450
  4. Richard 1234
  5. Gerald 1001
  6. Jimmy 300
letöltés szöveges állományként

Az 1. példa bemenethez tartozó kimenet

  1. 2
  2. Richard, YOU ARE FIRED!
  3. Gerald, YOU ARE FIRED!
letöltés szöveges állományként

2. példa bemenet

  1. 3 5555 2
  2. Ronald 1000
  3. George 2000
  4. Bill 3000
letöltés szöveges állományként

A 2. példa bemenethez tartozó kimenet

  1. impossible
letöltés szöveges állományként

Eredeti feladat

ACM ICPC 2017 German Collegiate Programming Contest

Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.