Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef vector<ll> vl;
- # define endl '\n'
- # define fi first
- # define se second
- # define all(a) a.begin(), a.end()
- ll cost(ll k, ll n, vl& a)
- {
- vl temp;
- for (ll i = 0; i < n; i++)
- {
- ll tempcost = a[i] + (k * (i + 1));
- temp.push_back(tempcost);
- }
- sort(all(temp));
- ll count = 0;
- for (ll i = 0; i < k; i++)
- {
- count += temp[i];
- }
- return count;
- }
- int main()
- {
- ll n, i, s; cin >> n >> s;
- vl a(n);
- for (i = 0; i < n; i++) cin >> a[i];
- ll l = 0, r = n;
- ll ansk = -1, ans2;
- while (l <= r)
- //l<r ->in any case
- //l<=r ->mid+1,mid-1
- {
- ll k = l + (r - l) / 2;//(l+r)/2
- //k fixed here by binary search
- ll count = cost(k, n, a);
- if (count > s)
- {
- r = (k - 1);
- continue;
- }
- if (count <= s)
- {
- if (k > ansk)
- {
- ansk = k, ans2 = count;
- }
- l = k + 1;
- continue;
- }
- }
- cout << ansk << " " << ans2 << " " << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement