-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path20.cpp
More file actions
66 lines (55 loc) · 962 Bytes
/
20.cpp
File metadata and controls
66 lines (55 loc) · 962 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include<iostream>
#include<cmath>
using namespace std;
int heap[100000];
int sz;
int k=0;
void normUP(int x)
{
while(x!=0 && heap[x]>heap[(x-1)/2])
{
swap(heap[x],heap[(x-1)/2]);
x = (x-1) / 2;
}
}
void norm(int x)
{
int t;
while (2*x+1<sz) {
t=2*x+1;
if (2*x+2<sz && heap[t]<heap[2*x+2])
t = 2*x+2;
if (heap[x]>=heap[t])
return;
swap(heap[x],heap[t]);
x=t;
}
}
void add(int x)
{
heap[sz++] = x;
k += 1;
normUP(x);
}
int del()
{
int temp = heap[0];
swap(heap[0], heap[--sz]);
norm(0);
return temp;
}
int main()
{
int a[10];
for(int i=9;i>-1;i--){
a[i]=i;
}
for(int i=0;i<10;i++)
add(a[i]);
for(int i=1;i<10;i++){
a[10-i] = del();
}
for(int i=0; i<10;i++)
cout << a[i] << " ";
return 0;
}