Cod sursa(job #2197316)

Utilizator ibicecIT Zilla ibicec Data 21 aprilie 2018 18:17:00
Problema Elementul majoritar Scor 40
Compilator java Status done
Runda Arhiva educationala Marime 1.56 kb
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws FileNotFoundException {
        Scanner scanner = new Scanner(new FileReader("elmaj.in"));
        int n = scanner.nextInt();
        int arr[] = new int[n];
        for (int i=0; i<n; i++) {
            arr[i] = scanner.nextInt();
        }

        PrintWriter printWriter = new PrintWriter("elmaj.out");
        Entry majorityElement = getMajorityElement(arr);
        if (majorityElement == null) {
            printWriter.print(-1);
        } else {
            printWriter.printf("%d %d", majorityElement.element, majorityElement.count);
        }
        printWriter.close();
    }

    static class Entry {
        int element;
        int count;
    }

    static Entry getMajorityElement(int arr[]) {
        Objects.requireNonNull(arr);
        Entry maxEntry = new Entry();

        Map<Integer,Integer> countMap = new HashMap<>();
        for (int element : arr) {
            int count = 1;
            if (countMap.containsKey(element)) {
                count = countMap.get(element) + 1;
            }
            countMap.put(element, count);
            if (count > maxEntry.count) {
                maxEntry.element = element;
                maxEntry.count = count;
            }
        }

        if (maxEntry.count >= arr.length/2+1) {
            return maxEntry;
        }

        return null;
    }

}