Cod sursa(job #855430)

Utilizator cristi_berceanuFMI - Cristi Berceanu cristi_berceanu Data 14 ianuarie 2013 22:45:31
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
 
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
 
int suma[65600], poz, val;
 
void actualizare(int nod, int st,int dr)
{
    if(st==dr)
        suma[nod]=val;
    else
    {
        int m;
        m=(st+dr)/2;
        if(poz<=m)
            actualizare(nod*2,st,m);
        else
            actualizare(nod*2+1,m+1,dr);
        suma[nod]=suma[nod*2]+suma[nod*2+1];
    }
}
 
void cauta(int nod,int st,int dr,int cat)
{
    if(st==dr)
        poz=st;
    else
    { 
        int m;
        m=(st+dr)/2;
        if(cat<=suma[nod*2])
            cauta(nod*2,st,m,cat);
        else
            cauta(nod*2+1,m+1,dr,cat-suma[nod*2]);
    }                 
}
 
int main()
{
    int n,i,cat[30001],unde[30001];
 
    f>>n;
 
    for(poz=1;poz<=n;poz++)
    { 
        val=1;
        actualizare(1,1,n);
        f>>cat[poz];
    }
     
    for(i=n;i>0;i--)
    {  
        cauta(1,1,n,cat[i]);
        unde[poz]=i;
        val=0;
        actualizare(1,1,n);
    }
    for(i=1;i<=n;i++)
        g<<unde[i]<<"\n";
     
    return 0;
}