Pagini recente » Cod sursa (job #3365580) | Cod sursa (job #3364539) | Cod sursa (job #3364570) | Cod sursa (job #3366808) | Cod sursa (job #3366807)
#include <iostream>
using namespace std;
int n, v[30001], aib[30001], rez[30001];
int ub(int x){
return (x & (-x));
}
void add(int x, int y){
int i;
for(i = x; i <= n; i+=ub(i)){
aib[i]+=y;
}
}
int numarare(int x){
int i, s = 0, st = 1, dr = n, mij;
while(st < dr){
mij = (st+dr)/2
for(i = mij; i >= 1; i -= ub(i)){
s += aib[i];
}
if(s <= x) dr = mij;
else st = mij + 1;
}
return st;
}
int main()
{
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
int x, i;
scanf("%d", &n);
for(i = 1; i <= n; i++){
scanf("%d", &v[i]);
add(x, 1);
}
for(i = n; i >= 1; i--){
rez[numarare(v[i])] = 1;
add(x, -1);
}
for(i = 1; i <= n; i++){
printf("%d\n", rez[i]);
}
return 0;
}