Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<int> v;
- int part(int l, int r) {
- int el = (l + r) / 2;
- while (l < r) {
- while (v[l] < el)
- l++;
- while (v[r] > el)
- r--;
- if (l < r) {
- swap(v[l++], v[r--]);
- }
- // cout << l << ' ' << r << ' ' << endl;
- }
- return r;
- }
- int f(int l, int r, int k) {
- int mid = part(l, r);
- if (l == r)
- return v[l];
- // cout << l << ' ' << r << ' ' << endl;
- if (mid == k) {
- return v[mid];
- }
- if (mid > k) {
- return f(l, mid - 1, k);
- }
- return f(mid + 1, r, k);
- }
- int main() {
- int n, k;
- cin >> n >> k;
- int a, b, c, a1, a2;
- cin >> a >> b >> c >> a1 >> a2;
- v.resize(n);
- v[0] = a1;
- v[1] = a2;
- for (int i = 2; i < n; ++i) {
- v[i] = a * v[i - 2] + b * v[i - 1] + c;
- }
- cout << f(0, n - 1, k - 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement