fork download
  1. #include<iostream>
  2. #include<vector>
  3. #define pb push_back
  4. using namespace std;
  5.  
  6. vector<int> vec;
  7.  
  8. int main()
  9. {
  10. int i,j,k,l,m,n,p;
  11. cin>>n>>k;
  12. int dp[10010]={0};
  13. for(i=1;i<=n;i++)
  14. {
  15. dp[i]+=dp[i-1]+2;
  16. }
  17. m=(k<=0)?-k:k;
  18. l=((n-1)*n)/2;
  19. if((l-m)%2==1)
  20. {
  21. cout<<"-1";
  22. return 0;
  23. }
  24. if(m>l)
  25. {
  26. cout<<"-1";
  27. return 0;
  28. }
  29. m=l-m;
  30. vec.pb(0);
  31. int sum=0;
  32. for(i=1;i<n;i++)
  33. {
  34. if(sum>=m)
  35. {
  36. j=i;
  37. break;
  38. }
  39. sum+=dp[i];
  40. }
  41. p=0;
  42. for(i=n-j;i>0;i--)
  43. {
  44. int temp=vec[p];
  45. vec.pb(++temp);
  46. p++;
  47. }
  48. l=vec.size();
  49. for(i=j-1;i>=1;i--)
  50. {
  51. if(m>=dp[i])
  52. {
  53. int temp=vec[l-1];
  54. vec.pb(--temp);
  55. m-=dp[i];
  56. }
  57. else
  58. {
  59. int temp=vec[l-1];
  60. vec.pb(++temp);
  61. }
  62. l++;
  63. }
  64. if(k<0)
  65. {
  66. l=vec.size();
  67. for(i=0;i<l;i++)
  68. {
  69. vec[i]=-vec[i];
  70. }
  71. }
  72. l=vec.size();
  73. for(i=0;i<l;i++)
  74. {
  75. cout<<vec[i]<<" ";
  76. }
  77. return 0;
  78. }
Success #stdin #stdout 0s 2732KB
stdin
Standard input is empty
stdout
-1