Pagini recente » Cod sursa (job #2287030) | Cod sursa (job #2223528) | Cod sursa (job #3205495) | Cod sursa (job #2262983) | Cod sursa (job #2132876)
#include <fstream>
using namespace std;
const int N = 30000;
ifstream f("schi.in");
ofstream g("schi.out");
int n;
int arb[4*N];
void build(int st,int dr,int k){
if(st==dr){
arb[k] = 1;
}
else{
int mij =(st+dr)/2;
build(st,mij,2*k);
build(mij+1,dr,2*k+1);
arb[k] = (arb[2*k]+arb[2*k+1]);
}
//g<<k<<" "<<arb[k]<<"\n";
}
int v[N];
int x[N];
int num,poz;
void creere(int st,int dr,int k){
int mij = (st+dr)/2;
if(st == dr){
arb[k]--;
g<<st<<" ";
return;
}
if(num <= arb[2*k]){
creere(st,mij,2*k);
arb[k] = arb[2*k+1]+arb[2*k];
}
else{
num -= arb[2*k+1];
creere(mij+1,dr,2*k+1);
arb[k] = arb[2*k+1]+arb[2*k];
}
}
int main()
{
f>>n;
build(1,n,1);
for(int i = 1; i<=n; i++){
f>>v[i];
}
for(int i =n;i>=1; i--){
f>>num;
poz = i;
creere(1,n,1);
//g<<"\n";
}
f.close();
g.close();
return 0;
}