Cod sursa(job #2201774)

Utilizator DimaTCDima Trubca DimaTC Data 5 mai 2018 23:09:27
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<bits/stdc++.h>
#define L 2*nod
#define R 2*nod+1
#define NMAX 30010

using namespace std;

int a[NMAX], s[NMAX], h[4*NMAX];
int n, poz, l, r, idx;

void update(int st, int dr, int nod, int poz, int idx) {
	if (st==dr) {
		h[nod] = 0; 
		s[st] = idx; 
		return;
	}
	int mid = st+dr >> 1;
	if (poz<=h[L]) update(st, mid, L, poz, idx);
	else update(mid+1, dr, R, poz-h[L], idx);
	h[nod] = h[L] + h[R];
}

void build(int st, int dr, int nod) {
	if (st==dr) {
		h[nod] = 1; return;
	}
	int mid = st+dr >> 1;
	build(st, mid, L);
	build(mid+1, dr, R);
	h[nod] = h[L] + h[R];
}

int main() { 
	ifstream cin("schi.in"); ofstream cout("schi.out");
	cin>>n;
	
	for (int i=1; i<=n; i++) cin>>a[i];
	build(1,n,1);
	for (int i=n; i; i--) update(1,n,1, a[i], i);
	for (int i=1; i<=n; i++) cout<<s[i]<<'\n';
	
	return 0;
}