Pagini recente » Cod sursa (job #1515868) | Cod sursa (job #1628919) | Cod sursa (job #873088) | Cod sursa (job #1075538) | Cod sursa (job #3151828)
#include <fstream>
using namespace std;
int n;
int v[30005];
ifstream cin("order.in");
ofstream cout("order.out");
void update(int i,int val)
{
while(i<=n)
{
v[i]+=val;
i+= ( i & (-i) );
}
}
int prequerry(int i)
{
int sum=0;
while(i>0)
{
sum+=v[i];
i-= ( i & (-i) );
}
return sum;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
update(i,1);
}
int chomp=2;
for(int i=1;i<=n;i++)
{
int st=1,dr=n,mij=0;
chomp=(chomp+n-1)%(n-i+1)+1;
while(st<dr)
{
mij=(st+dr)/2;
if(prequerry((st+dr)/2) >= chomp)
dr=mij;
else
st=mij+1;
}
cout<<dr<<' ';
update(dr,-1);
}
return 0;
}