Pagini recente » Cod sursa (job #1276569) | Profil Angelin | Cod sursa (job #147052) | Cod sursa (job #2816100) | Cod sursa (job #853956)
Cod sursa(job #853956)
#include <fstream>
#define NMAX 500001
using namespace std;
ifstream input("algsort.in");
ofstream output("algsort.out");
//int vect[NMAX];
pair <int,int> tree[1 << 20];
int N;
const int Infinit = 2147483647;
void update_tree(int nod , int left , int right , const int value , int A)
{
if (left == right)
{
tree[nod].first = value;
tree[nod].second = A;
}
else
{
int middle = (left + right) >> 1;
int left_son = nod << 1;
int right_son = left_son + 1;
if (A <= middle) update_tree(left_son , left , middle , value , A);
if (A > middle) update_tree(right_son , middle+1 , right , value , A);
if (tree[left_son].first < tree[right_son].first)
{
tree[nod] = tree[left_son];
}
else
{
tree[nod] = tree[right_son];
}
}
}
int main()
{
input >> N;
for (int i =1;i<=N;i++)
{
int x;
input >> x;
update_tree(1,1,N,x,i);
}
for (int i =1;i<=N;i++)
{
output << tree[1].first << " ";
update_tree(1,1,N,Infinit,tree[1].second);
}
input.close();
output.close();
return 0;
}