Cod sursa(job #647645)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 11 decembrie 2011 17:59:03
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
#define N 100001
#define ll unsigned long long
int n,t,p[N],r,l;
ll k,i;
int main()
{freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
scanf("%d%llu",&n,&k);
for(i=1;i<=n&&!r&&!l;i++)
if(i*(i-1)/2==k)
      r=i;
else
      if(i*(i-1)/2<k&&k<i*(i+1)/2)
            l=i;
if(r)
      {for(i=1;i<=n-r;i++)
            p[i]=i;
      for(t=n,i=n-r+1;i<=n;i++)
            p[i]=t--;}
else
      {for(i=1;i<n-l;i++)
            p[i]=i;
      p[n-l]=n+k-l*(l+1)/2;
      for(t=n,i=n-l+1;i<=n;i++)
            {if(t==p[n-l])
                   t--;
            p[i]=t--;}}
for(i=1;i<=n;i++)
      printf("%d ",p[i]);
return 0;}