Cod sursa(job #626571)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 27 octombrie 2011 17:25:36
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#define N 100001
#define ll unsigned long long
ll n,k,i,r,l,p[N],t;
int main()
{freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
scanf("%llu%llu",&n,&k);
for(i=1;i<=n;i++)
if(i*(i-1)/2==k)
      {r=i;
      break;}
else
      if(i*(i-1)/2<k&&k<i*(i+1)/2)
            {l=i;
            break;}
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("%llu ",p[i]);
return 0;}