Cod sursa(job #169603)

Utilizator cretuMusina Rares cretu Data 1 aprilie 2008 20:17:25
Problema Schi Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#define m ((st+dr)>>1)
#define ns (nod<<1)
#define nd (ns+1)
#define MAX 30001

using namespace std;

int s[MAX], val[MAX];
int n, poz, concurent;

int Update(int nod, int st, int dr)
{
     if (st == dr)     
     {
         if (!s[st]) 
         {
             s[st] = concurent;
             return 1;       
         }
         return 0;
     }
     
     if (poz <= m) return Update(ns, st,  m);
     else          return Update(nd, m+1, dr);
}

int main()
{
    int i, ok;
    ifstream fin("schi.in");
    fin >> n;
    for (i = 1; i <= n; i++)   
    { 
        fin >> val[i];
        s[i] = 0;
    }
    fin.close();
    
    for (i = n; i >= 1; i--)
    {
         concurent = i;
         poz = val[i];
         while(true) 
         { 
             ok = Update(1, 1, n);
             if (ok == 1) break;        
             poz++; 
         }
    }
    
    ofstream fout("schi.out");
    for (i = 1; i <= n; i++)
        fout << s[i] << "\n";
    fout.close();
    
    return 0;
}