Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. vector<int> v;
  5.  
  6. int part(int l, int r) {
  7. int el = (l + r) / 2;
  8. while (l < r) {
  9.  
  10. while (v[l] < v[el])
  11. l++;
  12. while (v[r] > v[el])
  13. r--;
  14. if (l < r) {
  15. swap(v[l++], v[r--]);
  16. }
  17. // cout << l << ' ' << r << ' ' << endl;
  18. }
  19. return l;
  20. }
  21.  
  22. int f(int l, int r, int k) {
  23. int mid = part(l, r);
  24.  
  25. if (l == r)
  26. return v[l];
  27. //cout << l << ' ' << r << ' ' << endl;
  28. if (mid == k) {
  29. return v[mid];
  30. }
  31. if (mid > k) {
  32. return f(l, mid - 1, k);
  33. }
  34. return f(mid + 1, r, k);
  35. }
  36.  
  37. int main() {
  38. int n, k;
  39. cin >> n >> k;
  40. int a, b, c, a1, a2;
  41. cin >> a >> b >> c >> a1 >> a2;
  42. v.resize(n);
  43. v[0] = a1;
  44. v[1] = a2;
  45. for (int i = 2; i < n; ++i) {
  46. v[i] = a * v[i - 2] + b * v[i - 1] + c;
  47. }
  48. cout << f(0, n - 1, k - 1);
  49. return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement