Здравствуйте. Помогите найти пожалуйста ошибку в реализации поиска k-ого элемента в массиве по неубыванию для чисел значение которых равно формуле:
,
где A,B,C ,a1,a2 мы задаем сами.
#include "stdafx.h"
#include <iostream>
using namespace std;
int partition(int a[], int left, int right)
{
int marker = left;
for (int i = left; i <= right; i++)
{
if (a[i] <= a[right])
{
swap(a[marker], a[i]);
marker++;
}
}
return marker - 1;
}
int finder(int a[] , int k , int n)
{
int left = 0, right = n - 1;
while (true)
{
int mid = partition(a, left, right);
if ((mid) == (k))
{
return a[mid];
}
else if (k < mid)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
}
int main()
{
int n, k;
int a[3 * 10000], A, B, C;
cin >> n >> k;
k--;
if (n == 1)
{
cin >> A >> B >> C >> a[0];
in.close();
}
else
{
cin >> 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;
}
}
if (n == 1)
{
cout << a[0];
}
else
{
cout << finder(a, i, n) << endl;
}
return 0;
}
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Работает как очистка памяти и все остальные шаблоны, без указания размера и типа, но правильно ли реализованы сами шаблоны?
Понятно, что изменение смысла auto от одного стандарта к другому приводит к возможности ошибки, или, наоборот, ошибочный из-за >> в шаблоне...