Pagini recente » Cod sursa (job #205067) | Statistici Petran George Stelian (mutza2) | Cod sursa (job #2332646) | Cod sursa (job #2887844) | Cod sursa (job #1880167)
#include<stdio.h>
#include<stdlib.h>
using namespace std;
FILE *f1 = fopen("schi.in", "r");
FILE *f2 = fopen("schi.out", "w");
int sol[30001], n, i, j, arb[70000], a[30001];
void creare(int nod, int st, int dr)
{
if (st == dr)
{
arb[nod] = 1;
return;
}
int mij;
mij = (st + dr) / 2;
creare(2*nod, st, mij);
creare(2*nod+1, mij + 1, dr);
arb[nod] = arb[2*nod] + arb[2*nod+1];
}
int poz(int nod, int nr, int st, int dr)
{
arb[nod]--;
if (st == dr)
{
return st;
}
int mij = (st+dr)/2;
if (nr <= arb[2*nod]) return poz(2*nod, nr, st, mij);
return poz(2*nod+1, nr - arb[2*nod], mij + 1, dr);
}
int main()
{
fscanf(f1, "%d", &n);
for (i = 1; i <= n; i++)
fscanf(f1, "%d", &a[i]);
creare(1,1,n);
for (i = n; i >= 1; i--)
{
sol[poz(1,a[i],1,n)] = i;
}
for (i = 1; i <= n; i++)
fprintf(f2, "%d\n", sol[i]);
fclose(f1);
fclose(f2);
return 0;
}