Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.26 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import java.util.Scanner;
  8. import java.util.TreeSet;
  9.  
  10. import javax.swing.text.html.HTMLDocument.Iterator;
  11.  
  12. public class TaskD {
  13.     public static void main(String[] args) {
  14.         Scanner s = new Scanner(System.in);
  15.         int q = s.nextInt();
  16.        
  17.        
  18.         while(q-- > 0) {
  19.             int n = s.nextInt();
  20.             int[] monsters = new int[n];
  21.             int bossMonster = 0;
  22.            
  23.             for(int i=0;i<n;i++) {
  24.                 monsters[i] = s.nextInt();
  25.                 bossMonster = Math.max(bossMonster, monsters[i]);
  26.             }
  27.            
  28.             int m = s.nextInt();
  29.            
  30.             HashMap<Integer,Integer> map = new HashMap<Integer,Integer>(n);
  31.             int bossHero = 0;
  32.            
  33.             for(int i=0;i<m;i++) {
  34.                 int str = s.nextInt();
  35.                 int end = s.nextInt();
  36.                
  37.                 bossHero = Math.max(bossHero, str);
  38.                
  39.                 if(map.containsKey(end)) {
  40.                     if(map.get(end) < str) {
  41.                         map.replace(end, str);
  42.                     }
  43.                 } else {
  44.                     map.put(end,str);
  45.                 }
  46.             }
  47.            
  48.             ArrayList<Hero> heros = new ArrayList<Hero>();
  49.            
  50.             for(int k : map.keySet()) {
  51.                 heros.add(new Hero(map.get(k),k));
  52.             }
  53.            
  54.             Comparator<Hero> comp = new Comparator<Hero>() {
  55.                 public int compare(Hero h1, Hero h2) {
  56.                     return Integer.compare(h1.end, h2.end);
  57.                 }
  58.             };
  59.            
  60.             Collections.sort(heros,comp);
  61.            
  62.             int max = 0;
  63.            
  64.             for(int i = heros.size()-1;i >= 0;i--) {
  65.                 int curr = heros.get(i).power;
  66.                 max = Math.max(max, curr);
  67.                 heros.get(i).power = max;
  68.             }
  69.            
  70.             TreeSet<Hero> corMap = new TreeSet<Hero>(comp);
  71.             corMap.addAll(heros);
  72.            
  73.             if(bossMonster > bossHero) {
  74.                 System.out.println(-1);
  75.                 continue;
  76.             }
  77.            
  78.             int con = 1;
  79.             int maxMon = 0;
  80.             int days = 1;
  81.            
  82.             for(int i=0;i<n;i++) {
  83.                 int curr = monsters[i];
  84.                 maxMon = Math.max(maxMon, curr);
  85.                 Hero dummy = new Hero(0,con);
  86.                
  87.                 Hero best = corMap.ceiling(dummy);
  88.                
  89.                 if(best != null && best.power >= maxMon) {
  90.                     con++;
  91.                 } else {
  92.                     maxMon = 0;
  93.                     con = 1;
  94.                     days++;
  95.                     i--;
  96.                 }
  97.             }
  98.            
  99.             System.out.println(days);
  100.         }
  101.     }
  102. }
  103.  
  104. class Hero {
  105.     int power, end;
  106.    
  107.     public Hero(int power, int end) {
  108.         this.power = power;
  109.         this.end = end;
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement