Advertisement
coder0687

RGB Queries

Nov 29th, 2022 (edited)
1,057
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | Source Code | 0 0
  1. // Question Link: https://www.hackerrank.com/contests/hackerrank-hackfest-2020/challenges/rbg/problem
  2. import java.io.*;
  3. import java.util.*;
  4.  
  5. public class Solution {
  6.     static interface Trie {
  7.         public Trie getInstance();
  8.         public TreeMap<Integer, Trie> getMap();
  9.     }
  10.     static class RedTrie implements Trie {
  11.         TreeMap<Integer, Trie> map = new TreeMap<>();
  12.         public Trie getInstance() { return new RedTrie(); }
  13.         public TreeMap<Integer, Trie> getMap() { return map; }
  14.     }
  15.     static class GreenTrie implements Trie {
  16.         TreeMap<Integer, Trie> map = new TreeMap<>();
  17.         public Trie getInstance() { return new GreenTrie(); }
  18.         public TreeMap<Integer, Trie> getMap() { return map; }
  19.     }
  20.     static class BlueTrie implements Trie {
  21.         TreeMap<Integer, Trie> map = new TreeMap<>();
  22.         public Trie getInstance() { return new BlueTrie(); }
  23.         public TreeMap<Integer, Trie> getMap() { return map; }
  24.     }
  25.     public static void main(String[] args)throws IOException {
  26.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  27.         String s[] = br.readLine().split(" ");
  28.         int n = ni(s[0]), q = ni(s[1]);
  29.         Trie rt = new RedTrie(), gt = new GreenTrie(), bt = new BlueTrie();
  30.         while(n-->0) {
  31.             s = br.readLine().split(" ");
  32.             int r = ni(s[0]), g = ni(s[1]), b = ni(s[2]);
  33.             insert(rt, r, g, b);
  34.             insert(gt, g, r, b);
  35.             insert(bt, b, r, g);
  36.         }
  37.         while(q-->0) {
  38.             s = br.readLine().split(" ");
  39.             int r = ni(s[0]), g = ni(s[1]), b = ni(s[2]);
  40.             System.out.println(exist(rt, r, g, b) && exist(gt, g, r, b) && exist(bt, b, r, g) ? "YES" : "NO");
  41.         }
  42.     }
  43.     public static void insert(Trie t, int... a) {
  44.         for(int x: a) {
  45.             t.getMap().putIfAbsent(x, t.getInstance());
  46.             t = t.getMap().get(x);
  47.         }
  48.     }
  49.     public static boolean exist(Trie trie, int x, int y, int z) {
  50.        if(trie.getMap().containsKey(x)) {
  51.             trie = trie.getMap().get(x);
  52.             for(Map.Entry<Integer, Trie> m: trie.getMap().entrySet()) {
  53.                 if(m.getKey()>y) return false;
  54.  
  55.                 TreeMap<Integer, Trie> map2 = m.getValue().getMap();
  56.                 if(map2.floorEntry(z)!=null)
  57.                     return true;
  58.             }
  59.         }
  60.         return false;
  61.     }
  62.     public static int ni(String s) {
  63.         return Integer.valueOf(s);
  64.     }
  65. }
Tags: Trie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement