Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. #define FNAME "kth"
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <ctime>
  6.  
  7. using namespace std;
  8.  
  9. const int N = 4e7;
  10.  
  11. int a[N];
  12.  
  13. int kth_element(int l, int r, int k) {
  14.     while (true) {
  15.         if (r <= l + 1) {
  16.             if (r == l + 1 && a[r] < a[l]) {
  17.                 swap(a[l], a[r]);
  18.             }
  19.             return a[k];
  20.         }
  21.  
  22.         int mid = (l + r) / 2;
  23.         swap(a[mid], a[l + 1]);
  24.         if (a[l] > a[r]) {
  25.             swap(a[l], a[r]);
  26.         }
  27.         if (a[l + 1] > a[r]) {
  28.             swap(a[l + 1], a[r]);
  29.         }
  30.         if (a[l] > a[l + 1]) {
  31.             swap(a[l], a[l + 1]);
  32.         }
  33.  
  34.         int i = l + 1, j = r, cur = a[l + 1];
  35.         while (true) {
  36.             ++i;
  37.             while (a[i] < cur) {
  38.                 ++i;
  39.             }
  40.             --j;
  41.             while (a[j] > cur) {
  42.                 --j;
  43.             }
  44.             if (i > j) {
  45.                 break;
  46.             }
  47.             swap(a[i], a[j]);
  48.         }
  49.  
  50.         a[l + 1] = a[j];
  51.         a[j] = cur;
  52.  
  53.         if (j >= k) {
  54.             r = j - 1;
  55.         }
  56.         if (j <= k) {
  57.             l = i;
  58.         }
  59.     }
  60. }
  61.  
  62. int main() {
  63. #ifdef _DEBUG
  64.     freopen("input.txt", "r", stdin);
  65.     freopen("output.txt", "w", stdout);
  66. #else
  67.     freopen(FNAME".in", "r", stdin);
  68.     freopen(FNAME".out", "w", stdout);
  69. #endif
  70.     ios::sync_with_stdio(false);
  71.  
  72.     int n, k, A, B, C;
  73.     cin >> n >> k >> A >> B >> C >> a[0] >> a[1];
  74.  
  75.     for (int i = 2; i < n; ++i) {
  76.         a[i] = A * a[i - 2] + B * a[i - 1] + C;
  77.     }
  78.  
  79.     cout << kth_element(0, n - 1, k - 1);
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement