Pagini recente » Cod sursa (job #1722433) | Cod sursa (job #685181) | Cod sursa (job #2273892) | Cod sursa (job #1252099) | Cod sursa (job #1814838)
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("order.in");
ofstream so("order.out");
int v[30010],n,sol;
void update(int x,int val)
{
int i;
for(i=x;i<=n;i+=(i&(-i)))
{
v[i]+=val;
}
}
int query(int x)
{
int i,j,sol,sum=0;
for(i=1;i<=n;i=i<<1);
for(j=0;i;i=i>>1)
if(j+i<=n)
{
if(v[j+i]+sum==x)
sol=j+i;
else
if(v[j+i]+sum<x)
{
j+=i;
sum+=v[j];
}
}
return sol;
}
int main()
{
si>>n;
int i;
for(i=1;i<=n;++i)
update(i,1);
int k=2;
for(i=1;i<=n;++i)
{
k=(k+i-1)%(n-i+1);
if(k==0)
k=n-i+1;
sol=query(k);
so<<sol<<' ';
update(sol,-1);
}
return 0;
}