fork download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <bits/stdc++.h>
  3. #include <unordered_map>
  4. #define endl '\n';
  5. #define all(v) ((v).begin()), ((v).end())
  6. #define sz(s) (int)s.size()
  7. #define Ceil(x,y) ((x+y-1)/y)
  8. #define RT(x) return cout<<x,0;
  9. #define mem(x,y) memset(x,y,sizeof(x))
  10. #define vi vector<int>
  11. #define pii pair<int,int>
  12. #define fx(n) fixed<<setprecision(n)
  13. #define watch(x) cout<<(#x)<<" = "<<x<<endl
  14. #define forr(i, n) for (int i = 0; i < int(n); i++)
  15. typedef long long ll;
  16. typedef unsigned long long ull;
  17. typedef double dl;
  18. const double PI = acos(-1), EPS = 1e-7;
  19. const int OO = 0x3f3f3f3f, N = 1e7 + 5, MOD = 1e9 + 7;
  20. using namespace std;
  21. void fast(){std::ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);}
  22. ll n,s;
  23. vector<int>v(n+1);
  24. ll calc(ll mid)
  25. {
  26. for(int i=1;i<=n;i++)
  27. v[i]=v[i]+i*mid;
  28. for(int i=1;i<=n;i++)
  29. cout<<v[i]<<" ";
  30. cout<<"\n";
  31. sort(all(v));
  32. ll cost=0;
  33. for(int i=1;i<=mid;i++)
  34. cost+=v[i];
  35. return cost;
  36. }
  37. int main()
  38. {
  39. fast();
  40. cin>>n>>s;
  41. for(int i=1;i<=n;i++)
  42. cin>>v[i];
  43. ll st=1,e=n,mid=0,ans=0;
  44. while(st<=e)
  45. {
  46. mid=(st+e)/2;
  47. if(calc(mid)<=s)
  48. {
  49. ans=calc(mid);
  50. st=mid+1;
  51. }
  52. else
  53. e=mid-1;
  54. cout<<ans<<"\n";
  55. }
  56. cout<<mid<<" "<<ans<<"\n";
  57. return 0;
  58. }
Success #stdin #stdout 0s 4504KB
stdin
3 11
2 3 5
stdout
4 7 11 
6 11 17 
17
9 17 26 
17
3 17