Pagini recente » Cod sursa (job #1601433) | Cod sursa (job #2232156) | Cod sursa (job #916414) | Cod sursa (job #1294697) | Cod sursa (job #832346)
Cod sursa(job #832346)
#include<fstream>
#include<algorithm>
using namespace std;
#define Nmax 524288
#define INF 1<<30
ifstream f("algsort.in");
ofstream g("algsort.out");
int aint[Nmax * 2], V[Nmax], N, val;
void build(int nod, int st, int dr) {
if(st == dr) {
aint[nod] = V[st];
return;
}
int mij = (st+dr)/2;
build(2*nod, st, mij);
build(2*nod+1, mij+1, dr);
aint[nod] = min(aint[2*nod], aint[2*nod+1]);
}
void update(int nod, int st, int dr) {
if(st == dr) {
aint[nod] = INF;
return;
}
int mij = (st+dr)/2;
if(val == aint[2*nod])
update(2*nod, st, mij);
else
update(2*nod+1, mij+1, dr);
aint[nod] = min(aint[2*nod], aint[2*nod+1]);
}
int main() {
int i;
f>>N;
for(i=1; i<=N; ++i)
f>>V[i];
fill(aint, aint+Nmax*2, INF);
build(1, 1, N);
for(i=1; i<=N; ++i) {
g<<aint[1]<<" ";
val = aint[1];
update(1, 1, N);
}
f.close();
g.close();
return 0;
}