Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.61 KB | None | 0 0
  1. class Main {
  2.   public static void main(String[] args) {
  3.     int n, k;
  4.     List<List<Integer>> a;
  5.     // Считали ети списки
  6.     // n - общее
  7.     // k - кол-во списков
  8.     // храню в сете пару (число, номер списка из которого это число)
  9.     // сортировка в первую очередь будет происходить по первому числу
  10.     // это нам и нужно
  11.     TreeSet<Pair<Integer, Integer>> set = new TreeSet();
  12.     for (int i = 0; i < k; ++i) {
  13.       // добавляю в сет начальный элемент каждого из списков
  14.       set.add(new Pair<>(a.get(i).get(0), i));
  15.       a.get(i).remove(a.get(i).size() - 1);
  16.     }
  17.     int res [] = new int[n];
  18.     for (int i = 0; i < n; ++i) {
  19.       // беру из сета минимальный элемент
  20.       // ставлю его в результирующий массив
  21.       // удаляю из сета и добавляю в сет следующий элемент того списка
  22.       // если список не пустой
  23.       // удаляю из списка то что добавил в сет
  24.       Pair<Integer, Integer> current = set.first();
  25.       res[i] = current.getKey();
  26.       set.remove(set.first());
  27.       int ind = current.getValue();
  28.       if (a.get(ind).isEmpty()) continue;
  29.       current = new Pair<>(a.get(ind).get(a.get(ind).size() - 1), ind);
  30.       a.get(ind).remove(a.get(ind).size() - 1);
  31.       set.add(current);
  32.     }
  33.     // результат это res
  34.   }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement