Pagini recente » Cod sursa (job #1415833) | Cod sursa (job #287678) | Cod sursa (job #1877041) | Cod sursa (job #1716946) | Cod sursa (job #3319990)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int idata[30005];
int pos[30005];
int treeadditive[30005];
int n;
void bump(int pos);
int query(int pos);
int main() {
fin >> n;
for(int i = 1; i <= n; i++){
fin >> idata[i];
//cout << i << " was on " << idata[i] << '\n';
}
for(int i = n; i >= 1; i--){
int spos = idata[i];
int actual = query(spos);
//cout << "final position for " << i << " is " << additive << '\n';
pos[actual] = i;
bump(actual);
}
for (int i = 1; i <= n; i++) {
fout << pos[i] << '\n';
}
return 0;
}
void bump(int pos){
treeadditive[pos]++;
}
int query(int pos) {
int sum = 0;
int i = 1;
for(i = 1; !(sum == pos - 1 && treeadditive[i] == 0); i++){
if(treeadditive[i] == 0) {
sum += 1;
}
}
//treeadditive[i] = 1;
/*
for (int i = 1; i <= n; i++){
cout << treeadditive[i] << ' ';
}*/
//cout << '\n';
//cout << "calculated an additive of " << sum << '\n';
return i;
}