Pagini recente » Clasament preONI 2006, Clasa a IX-a si gimnaziu | Cod sursa (job #2123148) | Cod sursa (job #640971) | Cod sursa (job #2196129) | Cod sursa (job #2193338)
#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)+query(n);
s2=query(poz1);
poz-=n;
continue;
}
}
printf("%d ",poz);
poz1=poz;
update(poz,1);
continue;
}
int s1=query(poz-n)+query(n),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)+query(n);
s2=query(poz1);
poz-=n;
continue;
}
}
printf("%d ",poz);
poz1=poz;
update(poz,1);
}
return 0;
}