Pagini recente » Cod sursa (job #211342) | Cod sursa (job #1813555) | Cod sursa (job #1810899) | Cod sursa (job #3289611) | Cod sursa (job #1847463)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
//#include <set>
#include <algorithm>
//#include <map>
//#include <cstring>
//#include <string>
//#include <queue>
#define mp make_pair
#define pb push_back
#define ff(i, x, n) for (int i = x; i <= n; ++i)
#define dd cout <<
#define nn << '\n'
#define ss << ' ' <<
#define z(x) ((x ^ (x - 1)) & x)
using namespace std;
int n, aib[30005], v[30005], loc[30005];
void aduna(int x);
int intreaba(int x);
int main(){
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
int i, m, mp;
cin >> n;
ff(i, 1, n) {
cin >> v[i];
}
for (i = n; i > 0; --i) {
m = 0;
do{
mp = m;
m = intreaba(v[i]);
v[i] += (m - mp);
} while (m - mp);
aduna(v[i]);
loc[v[i]] = i;
}
ff(i, 1, n) {
dd loc[i] nn;
}
}
void aduna(int x) {
do {
++aib[x];
x += z(x);
} while (x <= n);
}
int intreaba(int x) {
int r = 0;
do {
r += aib[x];
x -= z(x);
} while (x);
return r;
}