Pagini recente » Cod sursa (job #1499859) | Cod sursa (job #2554093) | Cod sursa (job #1743455) | Cod sursa (job #1766540) | Cod sursa (job #4694)
Cod sursa(job #4694)
#include <stdio.h>
int n,i,j,l,k,m,a[100010],b[100010];
int caut(int l,int r,int n)
{
int m=0;
while (l<=r)
{
m=(l+r)/2;
if (m*(m+1)/2==n) return m;
else
if (m*(m+1)/2<n && (m+1)*(m+2)/2>n) return(m+1);
else
if (m*(m+1)/2<n) l=m+1;
else r=m-1;
}
return m;
}
int main()
{
freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=n;++i) b[i]=0;
k=caut(1,n+1,m);
j=(k*(k+1))/2-m;
l=n;
for (i=k;i>0;--i)
if (i!=j)
{
a[l]=n-i;
l--;
}
a[l]=n;
if (j>0)
{
l--;
a[l]=n-j;
}
for (i=1;i<l;++i) a[i]=i;
for (i=1;i<=n;++i)
printf("%d ",a[i]);
return 0;
}