Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FNAME "kth"
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- const int N = 4e7;
- int a[N];
- int kth_element(int l, int r, int k) {
- while (true) {
- if (r <= l + 1) {
- if (r == l + 1 && a[r] < a[l]) {
- swap(a[l], a[r]);
- }
- return a[k];
- }
- int mid = (l + r) / 2;
- swap(a[mid], a[l + 1]);
- if (a[l] > a[r]) {
- swap(a[l], a[r]);
- }
- if (a[l + 1] > a[r]) {
- swap(a[l + 1], a[r]);
- }
- if (a[l] > a[l + 1]) {
- swap(a[l], a[l + 1]);
- }
- int i = l + 1, j = r, cur = a[l + 1];
- while (true) {
- ++i;
- while (a[i] < cur) {
- ++i;
- }
- --j;
- while (a[j] > cur) {
- --j;
- }
- if (i > j) {
- break;
- }
- swap(a[i], a[j]);
- }
- a[l + 1] = a[j];
- a[j] = cur;
- if (j >= k) {
- r = j - 1;
- }
- if (j <= k) {
- l = i;
- }
- }
- }
- int main() {
- #ifdef _DEBUG
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #else
- freopen(FNAME".in", "r", stdin);
- freopen(FNAME".out", "w", stdout);
- #endif
- ios::sync_with_stdio(false);
- int n, k, A, B, C;
- cin >> n >> k >> A >> B >> C >> a[0] >> a[1];
- for (int i = 2; i < n; ++i) {
- a[i] = A * a[i - 2] + B * a[i - 1] + C;
- }
- cout << kth_element(0, n - 1, k - 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement