Cod sursa(job #2427220)

Utilizator copanelTudor Roman copanel Data 31 mai 2019 10:48:04
Problema Schi Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

int arb[131073];
int input[30000];
int output[30000];

int query(int p, int node, int st, int dr) {
	if (st == dr) {
		arb[node] = 1;
		return st;
	}
	int m = (st + dr) / 2;
	int libere = m - st + 1 - arb[2*node];
	int r;
	if (p <= libere) {
		r = query(p, 2 * node, st, m);
	} else {
		r = query(p - libere, 2 * node + 1, m + 1, dr);
	}
	arb[node]++;
	return r;
}

int main() {
	FILE *fin = fopen("schi.in", "r"),
		 *fout = fopen("schi.out", "w");
	int n, i;

	fscanf(fin, "%d", &n);
	for (i = 0; i < n; i++) {
		fscanf(fin, "%d", &input[n - i - 1]);
	}
	for (i = 0; i < n; i++) {
		int r = query(input[i], 1, 0, n - 1);
		output[r] = n - i;
	}

	for (i = 0; i < n; i++) {
		fprintf(fout, "%d\n", output[i]);
	}

	return 0;
}