Pagini recente » Cod sursa (job #2126325) | Cod sursa (job #1484142) | Cod sursa (job #2820901) | Cod sursa (job #1312319) | Cod sursa (job #2146760)
#include <fstream>
#define nmax 60000*2+1
using namespace std;
ifstream fin("order.in");
ofstream fout("order.out");
int v[nmax],val,poz;
int ms[nmax],rambo=0,ppo;
void build(int nod,int s,int d)
{
if(s==d)
{
v[nod]=val;
ms[nod]=1;
return;
}
int mij=(s+d)/2;
if(mij>=poz)
build(nod*2,s,mij);
else
build(nod*2+1,mij+1,d);
v[nod]=max(v[2*nod],v[2*nod+1]);
ms[nod]=ms[2*nod]+ms[2*nod+1];
}
void query(int nod,int s,int d)
{
if(s==d)
{
v[nod]=0;
ms[nod]=0;
ppo=d;
return;
}
int mij=(s+d)/2;
if(rambo+ms[nod*2]>=poz)
query(2*nod,s,mij);
else
{
rambo+=ms[nod*2];
query(2*nod+1,mij+1,d);
}
v[nod]=max(v[2*nod],v[2*nod+1]);
ms[nod]=ms[2*nod]+ms[2*nod+1];
}
int main()
{
int n;
fin>>n;
for(int i=1;i<=n;i++)
{
val=i;
poz=i;
build(1,1,n);
}
poz=1;
int pr=n;
for(int i=1;i<=n;i++)
{
poz+=i;
poz%=pr;
if(!poz)
poz=pr;
rambo=0;
query(1,1,n);
poz--;
fout<<ppo<<" ";
pr--;
}
return 0;
}