Cod sursa(job #829932)

Utilizator Marius96Marius Gavrilescu Marius96 Data 6 decembrie 2012 01:40:08
Problema Order Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<cstdio>
#define MX 33005
#define MMX (1<<15)

int t[MX];
void u (int i,int v)
{
	while(i<MX)
		t[i]+=v,i+=(i&-i);
}

int n;

int s (int x)
{
	int ret=0, cur=0;

	for(int i=MMX;i;i/=2)
		if(t[ret+i]+cur<x)
			ret+=i,cur+=t[ret];

	return ret;
}

int main (void)
{
	freopen ("order.in","r",stdin);
#ifdef INFOARENA
	freopen ("order.out","w",stdout);
#endif

	scanf ("%d",&n);

	for(int i=1;i<=n;i++)
		u (i,1);

	printf ("2");
	int p=2;
	int l=2;
	for(int i=1;i<n;i++){
		u (p,-1);
		l=(l+i)%(n-i);
		if(!l)
			l=n-i;
		p=s (l)+1;
		printf (" %d",p);
	}

	return 0;
}