Pagini recente » Cod sursa (job #2032422) | Cod sursa (job #485211) | Cod sursa (job #2502229) | Cod sursa (job #356423) | Cod sursa (job #212365)
Cod sursa(job #212365)
#include <stdio.h>
#define DIM 300001
int C[DIM],L[DIM];
int V[DIM*3];
int n,i;
void cre(int st, int dr, int nod){
int mij;
if (st==dr) {
V[nod] = 1;
} else {
mij = (st+dr)/2;
cre(st, mij, 2*nod);
cre(mij+1, dr, 2*nod+1);
V[nod] = V[2*nod]+V[2*nod+1];
}
}
void cautSiCorect(int st, int dr, int nod, int c, int poz){
int mij;
if (st==dr) {
V[nod] = 0;
L[st] = c;
} else {
mij = (st+dr)/2;
if (V[2*nod]>=poz)
cautSiCorect(st,mij,2*nod,c,poz);
else
cautSiCorect(mij+1,dr,2*nod+1,c,poz-V[2*nod]);
V[nod] = V[2*nod]+V[2*nod+1];
}
}
int main(){
FILE *f = fopen("schi.in","r");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++) {
fscanf(f,"%d",&C[i]);
}
fclose(f);
cre(1,n,1);
for (i=n;i>=1;i--) {
cautSiCorect(1,n,1,i,C[i]);
}
FILE *g = fopen("schi.out","w");
for (i=1;i<=n;i++) {
fprintf(g,"%d\n",L[i]);
}
fclose(g);
return 0;
}