Pagini recente » Cod sursa (job #3031631) | Cod sursa (job #1591726) | Cod sursa (job #1549526) | Cod sursa (job #1930621) | Cod sursa (job #1409322)
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,i,j;
long long m,st,dr,mij,k;
int main()
{
freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
scanf("%d %lld",&n,&k);
st=1; dr=n*1LL;
while (st<=dr)
{
mij=(st+dr)/2;
if ((mij*(mij-1))/2<0)
{dr=mij-1; continue;}
if ((mij*(mij-1))/2==k)
{m=mij; break;}
if ((mij*(mij-1))/2<=k)
{m=max(mij,m); st=mij+1;}
else dr=mij-1;
}
if (k==(m*(m-1))/2)
{
for (i=1;i<=n-m;i++)
printf("%d ",i);
for (i=n;i>=n-m+1;i--)
printf("%d ",i);
return 0;
}
for (i=1;i<=n-m-1;i++) if (i!=n-(((m+1)*m)/2-k))
printf("%d ",i);
printf("%d %d ",n-(((m+1)*m)/2-k),n);
for (i=n-1;i>=n-m;i--) if (i!=n-(((m+1)*m)/2-k))
printf("%d ",i);
return 0;
}