Pagini recente » Cod sursa (job #2571735) | Cod sursa (job #2967788) | Cod sursa (job #2690243) | Cod sursa (job #2475657) | Cod sursa (job #169603)
Cod sursa(job #169603)
#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;
}