Cod sursa(job #854669)

Utilizator RamaStanciu Mara Rama Data 13 ianuarie 2013 20:38:03
Problema Schi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>

using namespace std;

int n,A[65600],node,clue;

void insert(int nod,int st,int dr)
{
    int mid;
    if(st==dr)
    {
        A[nod]=clue;
        return;

    }
    mid=(st+dr)/2;
    if(node<=mid) insert(2*nod,st,mid);
        else insert(2*nod+1,mid+1,dr);
    A[nod]=A[2*nod]+A[2*nod+1];
}
void search(int nod,int st,int dr,int mod)
{
    int mid;
    if(st==dr) node=st;
        else
        {
            mid=(st+dr)/2;
            if(mod<=A[2*nod]) search(nod*2,st,mid,mod);
                else search(nod*2+1,mid+1,dr,mod-A[nod*2]);
        }

}
int main()
{
    int mod=1,j,i,v[30001],W[30001];
    FILE*f,*g;
    f=fopen("schi.in","r");
    g=fopen("schi.txt","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
    {
        node=i;
        fscanf(f,"%d",&v[i]);
        clue=1;
        insert(1,1,n);
    }
    for(j=n;j>0;j--)
    {
        search(1,1,n,v[j]);
        W[node]=j;
        clue=0;
        insert(1,1,n);
    }
    for(j=1;j<=n;j++)
    {
        fprintf(g,"%d\n",W[j]);
    }
    return 0;
}