Pagini recente » Profil Andrei-27 | Cod sursa (job #653406) | Cod sursa (job #164433) | Cod sursa (job #1190809) | Cod sursa (job #772776)
Cod sursa(job #772776)
#include<fstream>
#define maxn 30010
using namespace std;
int arb[4*maxn];
ifstream in("order.in");
ofstream out("order.out");
int val,poz,n,s,pozitie,ans,j;
void update(int nod,int left,int right)
{
if(left==right)
{
arb[nod]=val;
return;
}
int mid=(left+right)/2;
if(poz<=mid) update(2*nod,left,mid);
else update(2*nod+1,mid+1,right);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void findpoz(int nod,int left,int right)
{
if(left==right)
{
poz=left;
return;
}
int mid=(left+right)/2;
if(val<=arb[2*nod]) findpoz(2*nod,left,mid);
else
{
val-=arb[2*nod];
findpoz(2*nod+1,mid+1,right);
}
}
void read()
{
in>>n;
for(int i=1;i<=n;i++)
{
poz=i;
val=1;
update(1,1,n);
}
j=2;
for(int i=0;i<n;i++)
{
j = ( j + i -1 ) % (n-i)+1;
val=j;
findpoz(1,1,n);
out<<poz<<" ";
val=0;
update(1,1,n);
}
}
int main()
{
read();
}