Pagini recente » Cod sursa (job #1961769) | Cod sursa (job #2617667) | Cod sursa (job #1120876) | Cod sursa (job #1693516) | Cod sursa (job #2193340)
#include <cstdio>
using namespace std;
int aib[120005],v[40005],n;
void update(int poz,int val)
{
for(;poz<=n;poz+=poz&-poz)
aib[poz]+=val;
}
int query(int poz)
{
int s=0;
for(;poz>0;poz-=poz&-poz)
s+=aib[poz];
return s;
}
int main()
{
freopen("order.in","r",stdin);
freopen("order.out","w",stdout);
scanf("%d",&n);
int poz=1,poz1=0,i;
for(i=1;i<=n;i++)
{
poz+=i;
if(poz<n)
{
int s1=query(poz),s2=query(poz1);
while(s1!=s2)
{
poz1=poz;
poz+=s1-s2;
if(poz<=n)
{
s1=query(poz);
s2=query(poz1);
continue;
}
else
{
s1=query(poz-n)+i-1;
s2=query(poz1);
poz-=n;
continue;
}
}
printf("%d ",poz);
poz1=poz;
update(poz,1);
continue;
}
int s1=query(poz-n)+i-1,s2=query(poz1);
poz-=n;
while(s1!=s2)
{
poz1=poz;
poz+=s1-s2;
if(poz<=n)
{
s1=query(poz);
s2=query(poz1);
continue;
}
else
{
s1=query(poz-n)+i-1;
s2=query(poz1);
poz-=n;
continue;
}
}
printf("%d ",poz);
poz1=poz;
update(poz,1);
}
return 0;
}