Cod sursa(job #3289394)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 26 martie 2025 18:51:44
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
//https://infoarena.ro/problema/schi
//#pragma GCC optimize ("Ofast")
//#pragma GCC optimize ("fast-math")
//#pragma GCC optimize ("unroll-loops")
//#define _USE_MATH_DEFINES
#include <iostream>
#include <fstream>
#include <vector>
//#include <cstring>
//#include <cmath>
//#include <bitset>
//#include <queue>
//#include <utility>
//#include <algorithm>
//#include <string>
//#include <map>
//#include <climits>
//#include <iomanip>
using namespace std;

ifstream fin("schi.in");
ofstream fout("schi.out");

int a[30005], pos[30005], rez[30005], n;
void scade(int p)
{
	for (int i = p; i <= n; i += i & (-i))
	{
		--a[i];
	}
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int i, j, p, putd;

	fin >> n;
	for (i = 1; i <= n; ++i)
	{
		fin >> pos[i];
		a[i] = i & (-i);
	}

	for (putd = 1; putd <= n; putd = putd << 1);
	putd = putd >> 1;

	for (i = n; i >= 1; --i)
	{
		for (j = 0, p = putd; p; p = p >> 1)
		{
			if ((j + p <= n) && (a[j + p] < pos[i]))
			{
				j += p;
				pos[i] -= a[j];
			}
		}
		++j;
		//cout << j << " ";

		rez[j] = i;
		scade(j);
	}

	for (i = 1; i <= n; ++i)
		fout << rez[i] << "\n";

	return 0;
}