Cod sursa(job #166071)

Utilizator K0nTr0LBucatea Madalin Stefan K0nTr0L Data 27 martie 2008 13:13:46
Problema Schi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#define inf 0x3f3f3f3f
int a[30001],cl[30001],c[64001],i,j,n,m,k,l,p;
FILE *in,*out;

void modifica(int nod,int st,int dr,int v){
int mijl;
if(st==dr)
 c[nod]=0,cl[st]=i;
else{
 mijl=(st+dr)/2;
  if(c[nod*2]<v)
   modifica(nod*2+1,mijl+1,dr,v-c[nod*2]);
  else
   modifica(nod*2,st,mijl,v);
 c[nod]=c[nod*2]+c[nod*2+1];
}
}

void actualizare(int nod,int st,int dr,int a,int b){
int mijl;
if(a<=st&&b>=dr)
 c[nod]=1;
else{
 mijl=(st+dr)/2;
  if(a<=mijl)
   actualizare(nod*2,st,mijl,a,b);
  if(b>mijl)
   actualizare(nod*2+1,mijl+1,dr,a,b);
 c[nod]=c[nod*2]+c[nod*2+1];
}
}

int main(){
in=fopen("schi.in","rt");
out=fopen("schi.out","wt");
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
 fscanf(in,"%d",&a[i]);
for(i=1;i<=n;i++)
 actualizare(1,1,n,i,i);
for(i=n;i>0;i--)
 modifica(1,1,n,a[i]);
for(i=1;i<=n;i++)
 fprintf(out,"%d\n",cl[i]);
return 0;
}