Pagini recente » Cod sursa (job #1939333) | Cod sursa (job #1861997) | Cod sursa (job #2673811) | Cod sursa (job #310784) | Cod sursa (job #2625125)
#include <bits/stdc++.h>
using namespace std;
int Arbore[90005],p;
ifstream fin("order.in");
ofstream fout("order.out");
void Initializeaza(int nod,int stanga,int dreapta)
{
Arbore[nod]=dreapta-stanga+1;
if(stanga==dreapta)
return ;
int mijloc=(stanga+dreapta)/2;;
Initializeaza(2*nod,stanga,mijloc);
Initializeaza(2*nod+1,mijloc+1,dreapta);
}
void Update(int nod,int stanga,int dreapta,int pozitie)
{
if(stanga==dreapta)
{
Arbore[nod]=0;
fout<<stanga<<' ';
return;
}
int mijloc=(stanga+dreapta)/2;
if(p<=pozitie+Arbore[2*nod])
Update(2*nod,stanga,mijloc,pozitie);
else
Update(2*nod+1,mijloc+1,dreapta,pozitie+Arbore[2*nod]);
Arbore[nod]=Arbore[2*nod]+Arbore[2*nod+1];
}
int main()
{
int n;
fin>>n;
Initializeaza(1,1,n);
p=2;
for(int i=0;i<n;++i)
{
p=(p+i-1)%(n-i)+1;
Update(1,1,n,0);
}
return 0;
}