Pagini recente » Cod sursa (job #3263518) | Borderou de evaluare (job #1569175) | Cod sursa (job #213257) | Cod sursa (job #747231) | Cod sursa (job #1743171)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
int aib[30001],init[30001],fin[30001];
int n;
int query(int x)
{
int sol=0,i;
for(i=x;i>0;i=(i&(i-1)))
{
sol=sol+aib[i];
}
return sol;
}
void citeste()
{
for(int i=1;i<=n;i++)
{
aib[i]=1;
}
for(int i=1;i<=n;i++)
{
in>>init[i];
aib[i]+=query(i-1)-query(i&(i-1));
}
}
void update(int x,int y)
{
for(int i=x;i<=n;i=i*2-(x&(x-1)))
{
aib[i]+=y;
}
}
int rezolva()
{
for(int i=n;i>0;i--)
{
fin[i]=query(i+1)+query(i);
update(i,-1);
out<<fin[i]/2<<" ";
}
}
int main()
{
in>>n;
citeste();
rezolva();
}