veronikaaa86

Legendary Farming

Feb 13th, 2018
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.59 KB | None | 0 0
  1. package MapLambdaStream;
  2.  
  3. import com.sun.org.apache.xpath.internal.SourceTree;
  4.  
  5. import java.io.BufferedReader;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.util.Map;
  9. import java.util.TreeMap;
  10.  
  11. public class P09_LegendaryFarming {
  12.     public static void main(String[] args) throws IOException {
  13.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  14.  
  15.         Map<String, Integer> keyMaterials = new TreeMap<>();
  16.         keyMaterials.put("shards", 0);
  17.         keyMaterials.put("fragments", 0);
  18.         keyMaterials.put("motes", 0);
  19.  
  20.         Map<String, Integer> junkMaterals = new TreeMap<>();
  21.  
  22.         boolean getMoreMaterials = true;
  23.         String obtained = "";
  24.  
  25.         while (getMoreMaterials) {
  26.             String[] line = reader.readLine().split(" ");
  27.  
  28.             for (int i = 0; i < line.length; i+=2) {
  29.                 int quantity = Integer.parseInt(line[i]);
  30.                 String material = line[i + 1].toLowerCase();
  31.  
  32.                 if (!keyMaterials.containsKey(material)) {
  33.                     if (!junkMaterals.containsKey(material)) {
  34.                         junkMaterals.put(material, 0);
  35.                     }
  36.                     junkMaterals.put(material, junkMaterals.get(material) + quantity);
  37.                 } else {
  38.                     keyMaterials.put(material, keyMaterials.get(material) + quantity);
  39.                     if (keyMaterials.get(material) >= 250) {
  40.                         obtained = material;
  41.                         keyMaterials.put(material, keyMaterials.get(material) - 250);
  42.                         getMoreMaterials = false;
  43.                         break;
  44.                     }
  45.                 }
  46.             }
  47.         }
  48.         System.out.printf("%s obtained!%n", getObtained(obtained));
  49.  
  50.         keyMaterials.entrySet()
  51.                 .stream()
  52.                 .sorted((e1,e2) -> e2.getValue().compareTo(e1.getValue()))
  53.                 .forEach(q -> {
  54.                     System.out.printf("%s: %d%n", q.getKey(), q.getValue());
  55.                 });
  56.         junkMaterals.forEach((key, value) -> System.out.printf("%s: %d%n", key, value));
  57.     }
  58.  
  59.     public static String getObtained (String material) {
  60.         String obtained = "";
  61.         switch (material) {
  62.             case "shards":
  63.                 obtained = "Shadowmourne";
  64.                 break;
  65.             case "fragments":
  66.                 obtained = "Valanyr";
  67.                 break;
  68.             default:
  69.                 obtained = "Dragonwrath";
  70.                 break;
  71.         }
  72.         return obtained;
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment