Pagini recente » Cod sursa (job #3215702) | Cod sursa (job #192383) | Cod sursa (job #1203102) | Cod sursa (job #2663962) | Cod sursa (job #1357411)
#include <fstream>
#define ub(i) i&(-i)
#define nmax 30005
using namespace std;
ifstream f("order.in");
ofstream g("order.out");
int aib[nmax];
int n,m,ps=2;
int query(int poz)
{
int sol=0,i;
for(i=poz;i>=1;i-=ub(i))
sol+=aib[i];
return sol;
}
void update(int poz,int x)
{
int i;
for (i=poz;i<=n;i+=ub(i))
aib[i]+=x;
}
int main()
{
int i,nr;
f>>n;
for (i=1;i<=n;i++) update(i,1);
nr=n;
for(i=1;i<=n;i++){
--nr;
int sol=0;
for(int p=1<<14;p;p>>=1){
if(sol+p<=n&&query(sol+p)<ps)
sol +=p;
}
++sol;
g<<sol<< " ";
update(sol,-1);
ps+=i;
if( nr ) ps%=nr;
if(!ps ) ps = nr;
}
return 0;
}