Cod sursa(job #1155721)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 27 martie 2014 09:31:48
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

int n,i,k;

int a[30005],v[4*30005],sol[30005];

void create(int nod, int st, int dr) {
    if(st==dr) {
        v[nod]=1;
        return;
    }
    int mid=(st+dr)/2;
    if(i<=mid)
        create(2*nod,st,mid);
    else
        create(2*nod+1,mid+1,dr);
    v[nod]=v[2*nod]+v[nod*2+1];
}

void update(int nod, int st, int dr, int poz) {
    if(st==dr) {
        v[nod]=0;
        sol[st]=i;
        return;
    }
    int mid=(st+dr)/2;
    if(poz<=v[2*nod])
        update(2*nod,st,mid,poz);
    else
        update(2*nod+1,mid+1,dr,poz-v[2*nod]);
    v[nod]=v[2*nod]+v[nod*2+1];

}

int main() {
    ifstream f("schi.in");
    ofstream g("schi.out");
    f>>n;
    for(i=1;i<=n;i++)
        create(1,1,n);
    for(i=1;i<=n;i++) {
        f>>a[i];
    }
    for(i=n;i>0;i--)
        update(1,1,n,a[i]);
    for(i=1;i<=n;i++)
        g<<sol[i]<<"\n";
    return 0;
}