Pagini recente » Cod sursa (job #1499009) | Cod sursa (job #1267957) | Cod sursa (job #11742) | Cod sursa (job #1291018) | Cod sursa (job #2617946)
#include <bits/stdc++.h>
#define NMAX 30005
using namespace std;
ifstream fin("order.in");
ofstream fout("order.out");
int n;
int aib[NMAX];
void update(int x,int val)
{
for(int i=x;i<=n;i+=i&(-i))
aib[i]+=val;
}
int compute(int x)
{
int suma=0;
for(int i=x;i>=1;i-=i&(-i))
{
suma+=aib[i];
}
return suma;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
update(i,1);
}
int mod=n,cnt=1;
for(int i=1;i<=n;i++)
{
cnt+=(i-1);
cnt%=mod;
int st=1,dr=n,mij,rasp;
while(st<=dr)
{
mij=(st+dr)/2;
if(compute(mij)<cnt+1)st=mij+1;
else
{
rasp=mij;
dr=mij-1;
}
}
fout<<rasp<<" ";
update(rasp,-1);
mod--;
}
}