Pagini recente » Cod sursa (job #3353357) | Cod sursa (job #3351765) | Cod sursa (job #3349768) | Cod sursa (job #3355322) | Cod sursa (job #3335783)
#include <fstream>
using namespace std;
ifstream fcin("order.in");
ofstream fout("order.out");
int n,poz=2,aib[30005];
inline void update(int nod, int x)
{
for(int i=nod; i<=n; i+=(i & (-i)))
aib[i]+=x;
}
inline int cb(int val)
{
int sol=0, sum=0;
for(int i=(1<<10); i>0; i>>=1)
if((sol|i)<=n && sum+aib[sol|i]<val)
sol|=i, sum+=aib[sol];
return sol+1;
}
int main()
{
fcin>>n;
for(int i=1; i<=n; i++)
update(i,1);
for(int i=1; i<=n; i++)
{
poz=(poz+i-1)%(n-i+1);
if(!poz) poz=n-i+1;
int rez=cb(poz);
fout<<rez<<" ";
update(rez,-1);
}
return 0;
}