Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Sort {
- public static boolean less(int year1, int height1, int year2, int height2) {
- if (year1 != year2) return (year1 > year2);
- return height1 < height2;
- }
- public static void merge_sort(int a[], int b[], int from, int to) {
- if (from >= to) return; // base case of quick sort recursion
- int mid = (from + to) / 2;
- merge_sort(a, b, from, mid);
- merge_sort(a, b, mid + 1, to);
- int aa[] = new int[to - from + 1];
- int bb[] = new int[to - from + 1];
- // merge 2 halves to aa, bb
- int i = from, j = mid + 1;
- int k = 0;
- while ((i <= mid) && (j <= to)) {
- if (less(a[i], b[i], a[j], b[j])) {
- aa[k] = a[i]; bb[k] = b[i];
- i++; k++;
- }
- else {
- aa[k] = a[j]; bb[k] = b[j];
- j++; k++;
- }
- }
- while (i <= mid) { aa[k] = a[i]; bb[k] = b[i]; i++; k++; }
- while (j <= to) { aa[k] = a[j]; bb[k] = b[j]; j++; k++; }
- for(i = from; i <= to; ++i) {
- a[i] = aa[i - from];
- b[i] = bb[i - from];
- }
- }
- public static void main(String[] arg) {
- Scanner in = new Scanner(System.in);
- int n = in.nextInt();
- int a[] = new int[n], b[] = new int[n];
- for(int i = 0; i < n; ++i) a[i] = in.nextInt();
- for(int i = 0; i < n; ++i) b[i] = in.nextInt();
- for(int i = 0; i < 2; ++i) {
- int cnt = 0;
- for(int j = i; j < n; j += 2) {
- cnt++;
- }
- int aa[] = new int[cnt], bb[] = new int[cnt];
- int k = 0;
- for(int j = i; j < n; j += 2) {
- aa[k] = a[j]; bb[k] = b[j];
- k++;
- }
- merge_sort(aa, bb, 0, cnt - 1);
- k = 0;
- for(int j = i; j < n; j += 2) {
- a[j] = aa[k]; b[j] = bb[k];
- k++;
- }
- }
- for(int i = 0; i < n; ++i) System.out.println(a[i] + " " + b[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement