Ganesh1648

Shops

Oct 27th, 2020
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.98 KB | None | 0 0
  1. /*package whatever //do not write package name here */
  2.  
  3. import java.io.*;
  4. import java.util.*;
  5.  
  6. class Code {
  7.    
  8.     static class Node  
  9.     {
  10.         int shop;
  11.         int vis_cnt;
  12.         Node()
  13.         {}
  14.         Node(int s, int vc)
  15.         {
  16.             shop=s;
  17.             vis_cnt=vc;
  18.         }
  19.     }
  20.    
  21.     static int[] solve(int n, int m, int visit[][])
  22.     {
  23.         int res[]=new int[3];
  24.         int a[]=new int[n+2];
  25.         Arrays.fill(a,0);
  26.         for(int i=0;i<m;i++)
  27.         {
  28.             a[visit[i][0]]+=1;
  29.             a[visit[i][1]+1]-=1;
  30.         }
  31.         for(int i=1;i<(n+2);i++)
  32.         {
  33.             a[i]+=a[i-1];
  34.         }
  35.         ArrayList<Node> nodes = new ArrayList<>();
  36.         for(int i=1;i<(n+1);i++)
  37.         {
  38.             nodes.add(new Node(i,a[i]));
  39.         }
  40.         Collections.sort(nodes, new Comparator<Node>(){
  41.             public int compare(Node a, Node b)
  42.             {
  43.                 if(a.vis_cnt == b.vis_cnt)
  44.                     return a.shop-b.shop;
  45.                
  46.                 return b.vis_cnt - a.vis_cnt;
  47.             }
  48.         });
  49.        
  50.         for(int i=0;i<3;i++)
  51.         {
  52.             res[i]=nodes.get(i).shop;
  53.         }
  54.         return res;
  55.     }
  56.    
  57.     public static void main (String[] args) throws Exception{
  58.        
  59.     BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  60.     int t = Integer.parseInt(bf.readLine().trim());
  61.     while (t-- > 0) {
  62.       String s[] = bf.readLine().trim().split("\\s+");
  63.       int n = Integer.parseInt(s[0]);
  64.       int m = Integer.parseInt(s[1]);
  65.       int visit[][] = new int[m][2];
  66.       for(int i=0;i<m;i++)
  67.       {
  68.           s = bf.readLine().trim().split("\\s+");
  69.           visit[i][0]=Integer.parseInt(s[0]);
  70.           visit[i][1]=Integer.parseInt(s[1]);
  71.       }
  72.       int res [] = solve(n,m,visit);
  73.       Arrays.sort(res);
  74.       for(int i=0;i<3;i++)
  75.         System.out.print(res[i]+" ");
  76.        
  77.       System.out.println();    
  78.     }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment