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