Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <set>
- #include <vector>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- int main()
- {
- vector <unsigned long long> v, s;
- vector <bool> a(1000000001, 0);
- int n;
- long long k, x;
- cin >> n >> x >> k;
- for (int i = 0; i < n; i++) {
- unsigned long long tmp;
- cin >> tmp;
- s.push_back(tmp);
- }
- sort(v.begin(), v.end());
- for (int i = 0; i < n; i++) {
- unsigned long long tmp = s[i];
- if (!a[tmp %x]) {
- a[tmp%x] = true;
- v.push_back(tmp);
- }
- }
- sort(v.begin(), v.end());
- unsigned long long l = 0, r = 2 * pow(10, 18);
- while (l != r)
- {
- unsigned long long m = (l + r) / 2, sum = 0;
- for (auto i : v) {
- sum += (m < i) ? 0 : (m - i) / x + 1;
- }
- if (sum < k) {
- l = m + 1;
- }
- else {
- r = m;
- }
- }
- cout << l << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement