Cod sursa(job #495599)

Utilizator snycwingsnycwing snycwing Data 25 octombrie 2010 22:17:17
Problema Farfurii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <stdio.h>

int n,x,i,ok[100002],s,nr;

int main()
{
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);

	scanf("%d%d",&n,&x);
	for(i=1;i<=n;i++) ok[i]=1;
	s=1;
	while(s*(s+1)<2*x) s++;
	for(i=1;i<=s;i++)
	{
		ok[i]=0;
		printf("%d ",i);
	}
	x=s*(s+1)-2*x;
	while(x)
	{
		s=1;
		while(s*(s+1)<=2*x) s++;
		s--;
		x-=s*(s+1)/2;
		nr=0;
		for(i=1;i<=n;i++)
		{
			if(ok[i]) nr++;
			if(nr==s-1)
			{
				s=i;
				ok[s]=0;
				break;
			}
		}
		printf("%d ",s);
	}

	for(i=n;i>0;i--)
		if(ok[i]) printf("%d ",i);
	printf("\n");

	return 0;
}