Cod sursa(job #571841)

Utilizator DanutzRusu Dan Andrei Danutz Data 4 aprilie 2011 20:20:13
Problema Farfurii Scor 80
Compilator cpp Status done
Runda 107 Marime 0.7 kb
#include <stdio.h>
int n,k;
FILE *f,*g;
int main(){
	int i,m,p;
	
	f=fopen("farfurii.in","r");
	
	g=fopen("farfurii.out","w");
	
	fscanf(f,"%d %d",&n,&k);
	
	fclose(f);
	
	p=1;
	while (p<n) p*=2;
	
	for (m=0;p>0;p/=2)
		if (m+p<=n && (m+p) * (m+p-1) <=2*k)
			m+=p;
		
	k-=m*(m-1)/2;
	
	if (!k)
	{
		for (i=1;i<=n-m;i++)
			fprintf(g,"%d ",i);
		for (i=n;i>n-m;i--)
			fprintf(g,"%d ",i);
		fputc('\n',g);
		
	}
	else
	{
		k=m-k; m++;
		
		for (i=1;i<=n-m;i++)
			fprintf(g,"%d ",i);
		
		fprintf(g,"%d ",n-k);
		
		for (i=n;i>n-k;i--)
			fprintf(g,"%d ",i);
		
		for (i=n-k-1;i>n-m;i--)
			fprintf(g,"%d ",i);
		
		fputc('\n',g);
	}
	
	fclose(g);
	
	return 0;
}