Cod sursa(job #29220)
Utilizator | Data | 8 martie 2007 19:53:33 | |
---|---|---|---|
Problema | Farfurii | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include<stdio.h>
#include<math.h>
int n,k,m,i,j,p;
int main()
{freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
scanf("%d %d",&n,&k);
for(p=1;p<n;p=p*2);
for(m=0;p>0;p=p/2)
if(m+p<=n&&(m+p)*(m+p-1)<=2*k)
m=m+p;
k=k-m*(m-1)/2;
if(!k){
for(i=1;i<=n-m;i++)
printf("%d ",i);
for(i=n;i>n-m;i--)
printf("%d ",i);}
else {
for(i=1;i<n-m;i++)
printf("%d ",i);
printf("%d ",n-k);
for(i=n;i>=n-m;i--)
if(i!=n-k) printf("%d ",i);}
fclose(stdout);
return 0;}