Cod sursa(job #530163)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 7 februarie 2011 08:27:58
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#include<math.h>
#define Nmax 100010
using namespace std;

unsigned long long n , p , i, inv, N, ld ;
long double r,delta ; 

int main()
{
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);
	
	scanf("%lld %lld",&n,&inv) ;
	
	if ( inv == 0 ) 
	{
		for( i = 1 ; i <= n ; i++ ) 
			printf("%lld ",i );		
		return 0;
	}
	
	delta = 1 + (inv<<3) ; 
	
	r = sqrt(delta);  p = (long long)r;
	
	if( delta != p*p ) p++;
	
	p = (p+1) >> 1 ;
	N = ( p * ( p-1 ) ) >> 1 ;
	
	ld = n - p ;
	
	for( i = 1 ; i <= ld ; i++ ) 
		printf("%lld ",i );
	
	N -= inv ; 
	N = n - N ;
	
	printf("%lld ",N) ;
	
	for( i = n ; i > ld ; i-- )
		if( i != N ) printf("%lld ",i);
	
	return 0;
}