Pagini recente » Cod sursa (job #2139208) | Cod sursa (job #834967) | Cod sursa (job #999657) | Cod sursa (job #1809420) | Cod sursa (job #2725047)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
/**
1 2 3 4 5 6 7 8
1 1 3 4 4 2 1 3
3 1 2 4 4 3 1 1
0 0 1 3 4 3 1 2
3 1 3 7 8 6 2 3
3 1 4 7 8 6 2 5
*/
int n, a[30100];
int aib[30100];
int sol[30100];
int f[40000];
int Query(int p)
{
int s = 0;
while(p >= 1)
{
s += aib[p];
p -= (p & (-p));
}
return s;
}
void Update(int p, int x)
{
while(p <= n)
{
aib[p] += x;
p += (p & (-p));
}
}
int main()
{
int i;
fin >> n;
for(i = n;i >= 1;i--)
fin >> a[i];
for(i = 1;i <= n;i++)
{
///fout << Query(a[i]) << " ";
sol[i] = a[i] + Query(a[i]);
Update(a[i], 1);
}
for(i = 1;i <= n;i++)
{
while(f[sol[i]] > 0)
sol[i]++;
fout << sol[i] << " ";
f[sol[i]]++;
}
return 0;
}