Cod sursa(job #564128)

Utilizator tudorsTudor Siminic tudors Data 26 martie 2011 19:33:08
Problema Farfurii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
using namespace std;
long long n,k,M,i,x;
FILE *f, *g;
void caut_bin()
{
	long long st,dr,mij;
	st=1;
	dr=n;
	while (st<=dr)
	{
		mij=(st+dr)/2;
		if ((long long)(mij*(mij-1)/2)<=k)
			st=mij+1;
		else
			dr=mij-1;
	}
	M=mij;
}
int main()
{
	f=fopen("farfurii.in","r");
	g=fopen("farfurii.out","w");
	fscanf(f,"%lld %lld",&n,&k);
	// se cauta binar M a.i.
	// m(m-1)/2 = K
	caut_bin();
	if ((long long)(M*(M-1)/2)==k)
	{
		for (i=1;i<=n-M;i++)
			fprintf(g,"%d ",i);
		for (i=0;i<M;i++)
			fprintf(g,"%d ",n-i);
	}
	else
	{
		x=((long long)(M*(M-1)/2-k));
		for (i=1;i<=n-M;i++)
			fprintf(g,"%d ",i);
		fprintf(g,"%d ",n-x);
		for (i=0;i<M;i++)
			if (i!=x)
				fprintf(g,"%d ",n-i);
	}
	fclose(f);
	fclose(g);
	return 0;
}