#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;

int main() {
	vector<int> data = {1, 5, 2, 20, 10, 7, 9, 1000};
    vector<const int*> ptr(data.size());
    transform(data.begin(), data.end(), ptr.begin(), [](const int& d) {return &d;});
    auto mid = next(ptr.begin(), data.size() / 2);
    nth_element(ptr.begin(), mid, ptr.end(), [](const int* lhs, const int* rhs) {return *lhs < *rhs;});
    ptrdiff_t pos = *mid - &data[0];
    cout << pos << endl << data[pos] << endl;
	return 0;
}