Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Java by registered user SKYDOS ( 17 years ago )
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in, "ISO-8859-1")));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "ISO-8859-1"));

        in.nextToken();
        int n = (int) in.nval;
        int[] heap = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            in.nextToken();
            heap[i] = (int) in.nval;
        }

        int max_elem, heap_size = n, root, left, right, cur=0;

        for (int i = 1; i < n; i++) {
            max_elem = heap[1];
            heap[1] ^= heap[heap_size]; heap[heap_size] ^= heap[1]; heap[1] ^= heap[heap_size];
            heap_size--;
            cur = 1;
            for (int pos = 1;;) {
                right = (left = pos << 1) + 1;
                if (left <= heap_size && right <= heap_size) {
                    if (heap[left] >= heap[right] && heap[left] > heap[pos]) {
                        heap[pos] ^= heap[left]; heap[left] ^= heap[pos]; heap[pos] ^= heap[left];
                        cur = pos = left;
                        continue;
                    }
                    if (heap[right] >= heap[left] && heap[right] > heap[pos]) {
                        heap[pos] ^= heap[right]; heap[right] ^= heap[pos]; heap[pos] ^= heap[right];
                        cur = pos = right;
                        continue;
                    }
                    break;
                } else {
                    if (left <= heap_size && right > heap_size && heap[left] > heap[pos]) {
                        heap[pos] ^= heap[left]; heap[left] ^= heap[pos]; heap[pos] ^= heap[left];
                        cur = pos = left;
                    } else break;
                }
            }
            
            out.println (cur+" "+max_elem);
        }

        out.close();
    }
}

 

Revise this Paste

Your Name: Code Language: