Pagini recente » Cod sursa (job #1327726) | Cod sursa (job #2461184) | Cod sursa (job #2728600) | Cod sursa (job #1766398) | Cod sursa (job #2303697)
#include<bits/stdc++.h>
using namespace std;
ifstream f("order.in");
ofstream g("order.out");
int Arb[30000*4+250];
int n;
int urm,actual=2;
void Up(int node,int st,int dr)
{
if(st==dr)
{
Arb[node]=1;
return;
}
int mij=(st+dr)/2;
Up(node*2,st,mij);
Up(node*2+1,mij+1,dr);
Arb[node]=Arb[node*2]+Arb[node*2+1];
}
int Cauta(int node,int st,int dr,int cat)
{
Arb[node]--;
if(st==dr)
{
return dr;
}
int mij=(st+dr)/2;
if(cat<=Arb[node*2])
return Cauta(node*2,st,mij,cat);
else
return Cauta(node*2+1,mij+1,dr,cat-Arb[2*node]);
}
int main()
{
f>>n;
Up(1,1,n);
for(int i=1;i<=n;++i)
{
urm=(i+actual-1)%Arb[1];
if(urm==0)
urm=Arb[1];
g<<Cauta(1,1,n,urm)<<' ';
actual=urm;
}
}