Pagini recente » Borderou de evaluare (job #1321262) | Cod sursa (job #1630855) | Cod sursa (job #2437451) | Monitorul de evaluare | Cod sursa (job #3357073)
/// soltuie AI
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int main(){
ios::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
int n;
fin >> n;
vector<int> v(n), cf(n);
for(auto &x:v) fin >> x;
int len = sqrt(n) + 1;
vector<vector<int>> blocuri(len);
for(int i = 1; i <= n; i++) {
blocuri[i / len].push_back(i);
}
for(int i = n - 1; i >= 0; i--) {
int k = v[i];
int bl_idx = 0;
while (bl_idx < len && k > blocuri[bl_idx].size()) {
k -= blocuri[bl_idx].size();
bl_idx++;
}
int ind_in_bloc = k - 1;
int poz_reala = blocuri[bl_idx][ind_in_bloc];
cf[poz_reala - 1] = i + 1;
blocuri[bl_idx].erase(blocuri[bl_idx].begin() + ind_in_bloc);
}
for(auto x:cf) fout << x << '\n';
return 0;
}