Programozó versenyek

DEIK Regionális Programozó Csapatverseny, nyílt kategória, 2019. december 8.

2019. december 8. 10:15 – 2019. december 8. 15:15

LEGO

Bizonyára te is emlékszel a gyerekkorod egyik kedvenc játékára, a színes építőkockára. Nemrég előkerült a padlásról Bob összes régi kockája, így kedvet kapott az építéshez. Tervbe vette, hogy szeretne minél több olyan készletet megépíteni, amit ugyan nem vásárolt meg, de a saját kockáiból mégis össze tud rakni. Elkezdte egy jegyzetfüzetben vezetni azt, hogy a különböző típusú kockák eltérő színeiből hány darabot talált. Balszerencséjére a kockák a padlás különböző szegleteiben voltak, ezért teljesen egyforma kockákat több különböző tételként tudott csak feljegyezni. Készíts egy programot, mely segít összesíteni a megtalált kockáit, majd eldönti azt, hogy egy kiszemelt készlet megépíthető-e vagy sem!

A bemenet specifikációja

A bemenet két részből áll. Az első fele a kiszemelt készlet megépítéséhez szükséges kockákat tartalmazza, egészen az első (és egyetlen) üres sorig. A továbbiakban a padláson talált kockák sorai következnek, egészen az állományvégjelig (EOF-ig). A bemenet minden sora (kivéve az egyetlen üres sort) elem szín darabszám alakú, ahol az elem a kocka típusának egyedi azonosítója (pozitív egész), a szín a kocka színét tartalmazó szóközmentes sztring, míg a darabszám vagy a készlet megépítéséhez szükséges, vagy a padlás egyik szegletében talált kockák darabszáma (pozitív egész). Biztos lehetsz abban, hogy a bemenet egyetlen sora sem hosszabb 30 karakternél.

A kimenet specifikációja

A kimenet első sorában a „Can be built” vagy a „Cannot be built” sztring szerepeljen attól függően, hogy a kiszemelt készlet megépíthető-e vagy sem! A következő sorok a készlet megépítéséhez szükséges különböző típusú és színű kockák mennyiségét, valamint a rendelkezésre álló kockák darabszámát tartalmazzák a példa kimeneten látható formátumban! A kockákhoz tartozó sorok a típusuk szerint növekvő sorrendben, azonos típusú kockák esetén a színük szerinti lexikografikus sorrendben szerepeljenek!

1. példa bemenet

  1. 3001 red 10
  2. 3003 green 4
  3. 3002 yellow 20
  4. 3003 red 30
  5. 3001 blue 10
  6. 3001 red 2
  7. 3003 green 1
  8. 3002 yellow 23
  9. 3003 red 30
  10. 3001 red 2
  11. 3001 red 7
  12. 3003 green 3
letöltés szöveges állományként

Az 1. példa bemenethez tartozó kimenet

  1. Can be built
  2. 3001 red: 11/10
  3. 3002 yellow: 23/20
  4. 3003 green: 4/4
  5. 3003 red: 30/30
letöltés szöveges állományként

2. példa bemenet

  1. 3001 red 2
  2. 3001 green 3
  3. 3001 red 5
letöltés szöveges állományként

A 2. példa bemenethez tartozó kimenet

  1. Cannot be built
  2. 3001 green: 0/3
  3. 3001 red: 5/2
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.