Cod sursa(job #176679)

Utilizator Andreid91Ciocan Andrei Andreid91 Data 11 aprilie 2008 15:53:33
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream.h>
#include<math.h>

int calc(long long m)
	{
	long long k=sqrt(2*m);
	if ((k+1)*(k+2)<=2*m) k++;
	if (k*(k+1)>2*m) k--;
	return k;
	}

int main()
{
int n; long long k,m;
ifstream f("farfurii.in");
f>>n>>m;  f.close();
k=calc(m);
ofstream g("farfurii.out");
if (k*(k+1)/2==m) {
		  int i;
		  for (i=1;i<n-k;i++) g<<i<<' ';
		  for (i=n-k;i<=n;i++) g<<n-(i-(n-k+1))-1<<' ';
		  }
	     else {
		  int v[100002],i,h,p;
		  for (i=1;i<n-k-1;i++) v[i]=i;
		  v[n]=n-k-1;
		  p=m-k*(k+1)/2;
		  int l=n-1;
		  while (l>n-k-1)
			{
			if (l!=n-p) v[l]=v[l+1]+1;
				else {
				     v[l]=v[l+1]+2;
				     h=v[l]-1;
				     }
			l--;
			}
		  v[l]=h;
		  for (i=1;i<=n;i++) g<<v[i]<<' ';
		  }
g.close();
return 0;
}