Advertisement
tiom4eg

MapCraft

Nov 18th, 2021 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. MapCraft
  2. --------
  3. TiOm4eG очень любит играть в популярную игру "MapCraft". Основной механикой этой игры является создание предметов (крафт). Чтобы создать предмет, нужно выложить предметы, необходимые для его создания, на сетку 3x3.
  4. У TiOm4eG установлена модификация, позволяющая получать доступ ко всем предметам из специального терминала, не храня их у себя в инвентаре. Этот терминал может как принимать предметы, так и мгновенно создавать новые (если необходимые ресурсы есть в терминале, конечно же). Этот терминал можно редактировать для своих нужд, например, задавать новые инструкции.
  5. Помимо игры в MapCraft, TiOm4eG обожает статистику. Поэтому ему стало интересно узнать значение некоторой функции для каждого предмета.
  6. Пусть значение функции craft(item, x) равно количеству предметов item, которое можно создать после x запросов к терминалу.
  7. Сейчас терминал знает набор рецептов R, состоящий из N различных рецептов, во всех этих рецептах участвует M различных предметов. Перед запросами в терминале находилось C различных предметов в каком-то количестве. Для всех рецептов R[i] вычислите craft(R[i], 0) + craft(R[i], 1) +...+ craft(R[i], Q), где Q - количество запросов к терминалу.
  8. --------
  9. Формат входных данных:
  10. В первой строке вводятся N, M, C, Q (1 <= N, M, C, Q <= 10000).
  11. В следующих 4N строках вводится список рецептов R в следующем виде:
  12. На первой строке вводится название рецепта.
  13. На следующих трёх строках вводится матрица 3x3, которая задаёт рецепт предмета. Если в какой-то ячейке матрицы хранится строка "empty", то для создания в этой ячейке не должно ничего лежать.
  14. На следующих C строках вводятся (item, value), где item - название предмета, value - количество единиц этого предмета в терминале перед запросами.
  15. После этого в Q строках задаются запросы вида (type, item, value):
  16. Если type = "craft", то терминал создаёт value копий рецепта item, затрачивая необходимые ресурсы.
  17. Если type = "add", то в терминал добавляется value копий предмета item.
  18. Всё названия предметов - строки, состоящие из строчных латинских букв, и имеющие длину не более 20 символов.
  19. Гарантируется, что для одного предмета может быть не больше одного рецепта.
  20. Гарантируется, что каждый запрос "craft" валиден.
  21. Гарантируется, что каждый предмет участвует в создании не более, чем 100 различных предметов.
  22. --------
  23. Формат выходных данных:
  24. В следующих N строках выведите craft(R[i], 0) +... + craft(R[i], Q).
  25. --------
  26. Пример:
  27. --------
  28. mapcraft.in
  29. 2 3 2 5
  30. rocketfuel
  31. petrol petrol petrol
  32. empty empty empty
  33. petrol petrol petrol
  34. rocket
  35. ironplate ironplate ironplate
  36. ironplate rocketfuel ironplate
  37. ironplate rocketfuel ironplate
  38. petrol 12
  39. ironplate 1000000
  40. add petrol 5
  41. craft rocketfuel 2
  42. add petrol 1
  43. craft rocketfuel 1
  44. craft rocket 1
  45. --------
  46. mapcraft.out
  47. 5
  48. 3
  49. --------
  50. Пояснение:
  51. craft(rocketfuel, 0) = 2, craft(rocketfuel, 1) = 2, craft(rocketfuel, 2) = 0, craft(rocketfuel, 3) = 1, craft(rocketfuel, 4) = 0, craft(rocketfuel, 5) = 0.
  52. craft(rocket, 0) = 0, craft(rocket, 1) = 0, craft(rocket, 2) = 1, craft(rocket, 3) = 1, craft(rocket, 4) = 1, craft(rocket, 5) = 0.
  53. --------
  54. Ограничения:
  55. TL - 1500 ms
  56. ML - 256 MB
  57.  
  58.  
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement