Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <iomanip>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- #include <string>
- #include <assert.h>
- #include <bitset>
- #include <map>
- #include <set>
- #include <queue>
- #include <stack>
- #include <cstring>
- #define ret return
- #define endl '\n'
- #define vec vector
- #define all(x) x.begin(), x.end()
- #define get_bit(n, i) (1 & (n >> i))
- #define sz(x) (long long)(x.size())
- #define forik(x) for (int i = 0; i < x; ++i)
- #define uint unsigned int
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- using namespace std;
- const ld eps = 1e-6l;
- const int INF = 1e8;
- void input() {
- if (0)
- setlocale(LC_ALL, "Russian");
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cout << fixed;
- cout << setprecision(6);
- //freopen("input.in", "r", stdin);
- //freopen("output.out", "w", stdout);
- }
- void solve();
- void precalc();
- signed main()
- {
- input();
- int multitest = 1;
- //cin >> multitest;
- precalc();
- while (multitest--)
- solve();
- }
- void precalc() {
- }
- #define int long long
- void solve() {
- int n, p;
- cin >> n >> p;
- vec<int> a(n);
- for (int i = 0; i < n; ++i) {
- cin >> a[i];
- }
- sort(all(a));
- ll max_count = 0;
- int mx_power = 0;
- for (int power = a[0]; power <= a[a.size() - 1]; ++power) {
- ll k = 0;
- for (int i = 0; i < n; ++i)
- if (a[i] == power)
- ++k;
- if (k * power <= p) {
- mx_power = power;
- max_count += k;
- }
- else
- break;
- }
- int hod = 0;
- int prev = 0;
- while (1) {
- if (prev == mx_power)
- break;
- ++hod;
- int l = prev + 1, r = mx_power, ans = prev + 1;
- while (l <= r) {
- int c = (l + r) / 2;
- int cnt = 0;
- for (int i = 0; i < n; ++i)
- if (a[i] > prev && a[i] <= c)
- ++cnt;
- ll splash = (ll)cnt * (ll)c;
- if (splash <= p) {
- l = c + 1;
- ans = c;
- }
- else
- r = c - 1;
- }
- prev = ans;
- }
- cout << max_count << ' ' << hod;
- }
Advertisement
Add Comment
Please, Sign In to add comment