Попытка решить SPOJ SUMFOUR, получение теста TLE 10 - PullRequest
0 голосов
/ 15 марта 2019

пытались решить https://www.spoj.com/problems/SUMFOUR/

Я пытаюсь решить, используя два цикла for для дополнений и хэш-карту для проверки доступности. Я считаю, что мой код n ^ 2. Может ли кто-нибудь помочь мне в повышении эффективности.

import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.*;

    class Main {
        public static void main(String args[]) throws Exception, java.lang.Exception {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int len = Integer.parseInt(br.readLine());
            long arr[][] = new long[len][4];
            for (int i = 0; i < arr.length; i++) {
                String line[] = br.readLine().split(" ");
                arr[i][0] = Long.parseLong(line[0]);
                arr[i][1] = Long.parseLong(line[1]);
                arr[i][2] = Long.parseLong(line[2]);
                arr[i][3] = Long.parseLong(line[3]);
            }
            long index = 0l;
            HashMap<Long, Integer> map = new HashMap<>();
            for (int i = 0; i < len; i++) {
                for (int j = 0; j < len; j++) {
                    index = arr[i][0] + arr[j][1];
                    if (map.containsKey(index)) {
                        map.put(index, map.get(index) + 1);
                    } else
                        map.put(index, 1);
                }
            }
            int count = 0;
            for (int i = 0; i < len; i++) {
                for (int j = 0; j < len; j++) {
                    index = (arr[i][2] + arr[j][3]) * -1;
                    if (map.containsKey(index)) {
                        count = count + map.get((index));
                    }
                }
            }
            System.out.println(count);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...