Cod sursa(job #2156849)

Utilizator DenisacheDenis Ehorovici Denisache Data 9 martie 2018 01:52:57
Problema Schi Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <functional>
#include <bitset>
#include <set>
#include <list>

using namespace std;

int aib[15005];
int n;

void update(int idx, int val) {
	for (; idx <= n; idx += idx & (-idx))
		aib[idx] += val;
}

int query(int idx) {
	int res = 0;

	for (; idx > 0; idx -= idx & (-idx))
		res += aib[idx];

	return res;
}

int main() {
	ios::sync_with_stdio(false);

	string filename = "schi";

	ifstream fin(filename + ".in");
	ofstream fout(filename + ".out");

	fin >> n;

	vector<int> vec(n + 1);
	vector<int> answer(n + 1);

	for (int i = 1; i <= n; ++i)
		fin >> vec[i];

	for (int i = n; i > 0; --i) {
		int pos = vec[i] + query(vec[i]);
		while (answer[pos]) ++pos;
		answer[pos] = i;
		update(vec[i], 1);
	}

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

	//system("pause");
	return 0;
}