Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.10 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.Scanner;
  4.  
  5. /**
  6.  *
  7.  * @author johnafish
  8.  */
  9. public class Main {
  10.     public static void main(String[] args) {
  11.         Scanner s = new Scanner(System.in);
  12.         int N = s.nextInt(); //Number of sensors
  13.         HashMap<Integer, Integer> freq = new HashMap<>();
  14.         for (int i = 0; i < N; i++) {
  15.             int M = s.nextInt();
  16.             int value = 1;
  17.             if (freq.containsKey(M)){
  18.                 value = freq.get(M)+1;
  19.             }
  20.             freq.put(M, value);
  21.         }
  22.  
  23.         int maxFreq=0;
  24.         int secondMaxFreq = 0;
  25.        
  26.         ArrayList<Integer> max = new ArrayList<>();
  27.         ArrayList<Integer> second = new ArrayList<>();
  28.        
  29.         for (int key : freq.keySet()){
  30.             if(freq.get(key)>maxFreq){
  31.                 second = (ArrayList<Integer>)max.clone();
  32.                 secondMaxFreq = maxFreq;
  33.                 maxFreq = freq.get(key);
  34.                 max.clear();
  35.                 max.add(key);
  36.             }
  37.             else if (freq.get(key)==maxFreq){
  38.                 max.add(key);
  39.             }
  40.             else if (freq.get(key)>secondMaxFreq){
  41.                 secondMaxFreq = freq.get(key);
  42.                 second.clear();
  43.                 second.add(key);
  44.             }
  45.             else if (freq.get(key)==secondMaxFreq){
  46.                 second.add(key);
  47.             }
  48.         }
  49.        
  50.         int maxAbs = 0;
  51.         if(max.size()==1){
  52.             for (int secondKey : second){
  53.                 if (Math.abs(max.get(0)-secondKey)>maxAbs){
  54.                     maxAbs = Math.abs(max.get(0)-secondKey);
  55.                 }
  56.             }
  57.         }
  58.         else if (max.size()==2){
  59.             maxAbs = Math.abs(max.get(0)-max.get(1));
  60.         }
  61.         else {
  62.             for(int key : max){
  63.                 for (int key2 : max) {
  64.                     if (Math.abs(key-key2)>maxAbs){
  65.                         maxAbs = Math.abs(key-key2);
  66.                     }
  67.                 }
  68.             }
  69.         }
  70.        
  71.         System.out.println(maxAbs);
  72.     }
  73.    
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement