Pagini recente » Cod sursa (job #1832713) | Cod sursa (job #738443) | Cod sursa (job #2946934) | Cod sursa (job #1453758) | Cod sursa (job #2386737)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("order.in");
ofstream fout("order.out");
int n,i,j,nr,num[130005];
void build(int n,int l,int r)
{
if(l==r)
{ num[n]=1; return; }
int m=(l+r)/2;
build(2*n, l, m);
build(2*n+1,m+1,r);
num[n]=num[2*n]+num[2*n+1];
}
void search(int n,int l,int r,int p)
{
if(l==r)
{
fout<<l<<" ";
num[n]=0; return;
}
int m=(l+r)/2;
if(num[2*n]>=p) search(2*n, l, m, p);
else search(2*n+1, m+1, r, p-num[2*n]);
num[n]=num[2*n]+num[2*n+1];
}
int main() {
fin>>n;
build(1,1,n);
int p=2,d=n;
for(i=1;i<=n;i++)
{
search(1,1,n,p);
if(--d)
{
p=(p+i)%d;
if(p==0) p=d;
}
}
}