Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Question Link: https://www.hackerrank.com/contests/hackerrank-hackfest-2020/challenges/rbg/problem
- import java.io.*;
- import java.util.*;
- public class Solution {
- static interface Trie {
- public Trie getInstance();
- public TreeMap<Integer, Trie> getMap();
- }
- static class RedTrie implements Trie {
- TreeMap<Integer, Trie> map = new TreeMap<>();
- public Trie getInstance() { return new RedTrie(); }
- public TreeMap<Integer, Trie> getMap() { return map; }
- }
- static class GreenTrie implements Trie {
- TreeMap<Integer, Trie> map = new TreeMap<>();
- public Trie getInstance() { return new GreenTrie(); }
- public TreeMap<Integer, Trie> getMap() { return map; }
- }
- static class BlueTrie implements Trie {
- TreeMap<Integer, Trie> map = new TreeMap<>();
- public Trie getInstance() { return new BlueTrie(); }
- public TreeMap<Integer, Trie> getMap() { return map; }
- }
- public static void main(String[] args)throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String s[] = br.readLine().split(" ");
- int n = ni(s[0]), q = ni(s[1]);
- Trie rt = new RedTrie(), gt = new GreenTrie(), bt = new BlueTrie();
- while(n-->0) {
- s = br.readLine().split(" ");
- int r = ni(s[0]), g = ni(s[1]), b = ni(s[2]);
- insert(rt, r, g, b);
- insert(gt, g, r, b);
- insert(bt, b, r, g);
- }
- while(q-->0) {
- s = br.readLine().split(" ");
- int r = ni(s[0]), g = ni(s[1]), b = ni(s[2]);
- System.out.println(exist(rt, r, g, b) && exist(gt, g, r, b) && exist(bt, b, r, g) ? "YES" : "NO");
- }
- }
- public static void insert(Trie t, int... a) {
- for(int x: a) {
- t.getMap().putIfAbsent(x, t.getInstance());
- t = t.getMap().get(x);
- }
- }
- public static boolean exist(Trie trie, int x, int y, int z) {
- if(trie.getMap().containsKey(x)) {
- trie = trie.getMap().get(x);
- for(Map.Entry<Integer, Trie> m: trie.getMap().entrySet()) {
- if(m.getKey()>y) return false;
- TreeMap<Integer, Trie> map2 = m.getValue().getMap();
- if(map2.floorEntry(z)!=null)
- return true;
- }
- }
- return false;
- }
- public static int ni(String s) {
- return Integer.valueOf(s);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement