Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package greedyTimes;
- import java.util.Collection;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- long entrance = Long.parseLong(scanner.nextLine());
- String[] caseS = scanner.nextLine().split("\\s+");
- var bag = new LinkedHashMap<String, LinkedHashMap<String, Long>>();
- long gold = 0;
- long stones = 0;
- long money = 0;
- for (int i = 0; i < caseS.length; i += 2) {
- String name = caseS[i];
- long number = Long.parseLong(caseS[i + 1]);
- String items = checkForItems(name);
- if (items.equals("")) {
- continue;
- } else if (entrance < bag.values().stream().map(Map::values).flatMap(Collection::stream).mapToLong(e -> e).sum() + number) {
- continue;
- }
- switch (items) {
- case "Gem":
- if (!bag.containsKey(items)) {
- if (bag.containsKey("Gold")) {
- if (number > bag.get("Gold").values().stream().mapToLong(e -> e).sum()) {
- continue;
- }
- } else {
- continue;
- }
- } else if (bag.get(items).values().stream().mapToLong(e -> e).sum() + number > bag.get("Gold").values().stream().mapToLong(e -> e).sum()) {
- continue;
- }
- break;
- case "Cash":
- if (!bag.containsKey(items)) {
- if (bag.containsKey("Gem")) {
- if (number > bag.get("Gold").values().stream().mapToLong(e -> e).sum()) {
- continue;
- }
- } else {
- continue;
- }
- } else if (bag.get(items).values().stream().mapToLong(e -> e).sum() + number > bag.get("Gem").values().stream().mapToLong(e -> e).sum()) {
- continue;
- }
- break;
- }
- fillMapWIthKey(bag,items,name);
- bag.get(items).put(name, bag.get(items).get(name) + number);
- if (items.equals("Gold")) {
- gold += number;
- } else if (items.equals("Gem")) {
- stones += number;
- } else if (items.equals("Cash")) {
- money += number;
- }
- }
- printBad(bag);
- }
- private static void printBad(LinkedHashMap<String, LinkedHashMap<String, Long>> bag) {
- for (var x : bag.entrySet()) {
- Long sumValues = x.getValue().values().stream().mapToLong(l -> l).sum();
- System.out.println(String.format("<%s> $%s", x.getKey(), sumValues));
- x.getValue().entrySet().stream().sorted((e1, e2) -> e2.getKey().compareTo(e1.getKey())).forEach(i -> System.out.println("##" + i.getKey() + " - " + i.getValue()));
- }
- }
- private static void fillMapWIthKey(LinkedHashMap<String, LinkedHashMap<String, Long>> bag, String items, String name) {
- if (!bag.containsKey(items)) {
- bag.put((items), new LinkedHashMap<String, Long>());
- }
- if (!bag.get(items).containsKey(name)) {
- bag.get(items).put(name, 0L);
- }
- }
- private static String checkForItems(String name) {
- String items = "";
- if (name.length() == 3) {
- items = "Cash";
- } else if (name.toLowerCase().endsWith("gem")) {
- items = "Gem";
- } else if (name.toLowerCase().equals("gold")) {
- items = "Gold";
- }
- return items;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement