#include <algorithm>
#include <iostream>
#include <ranges>
#include <vector>
using namespace std;
using value_t = unsigned;
using iter_t = vector<value_t>::iterator;
double fn(const value_t max, const value_t min) {
return static_cast<double>(max) / static_cast<double>(min);
}
int main() {
size_t n;
cin >> n;
vector<value_t> nums(n);
for (auto& num : nums) {
cin >> num;
}
if (ranges::is_sorted(nums, greater<>())) {
puts("0 0");
}
else {
const auto [pmin, pmax] = ranges::minmax_element(nums);
if (pmin < pmax) {
const auto beg = nums.begin();
cout << distance(beg, pmin) + 1 << ' ' << distance(beg, pmax) + 1 << '\n';
}
else {
pair<size_t, size_t> res{};
size_t i = 0;
auto m = 0.0;
while (i < n - 1) {
for (auto j = i + 1; j < n; ++j) {
if (nums[i] < nums[j]) {
const auto t = fn(nums[j], nums[i]);
if (m < t) {
res.first = i + 1;
res.second = j + 1;
m = t;
}
}
}
++i;
}
cout << res.first << ' ' << res.second << '\n';
}
}
}
Дан массив a1,a2,...an. Необходимо выбрать в нём два элемента ai и aj, такие что i<j, и отношение ajai — максимально и больше 1.
Входные данные
В первой строке задано целое число 2 ⩽n⩽ 100 000
— количество элементов в массиве.
Во второй строке заданы n целых положительных чисел ai(1 ⩽i⩽n, 1 ⩽ai⩽ 5000).
Выходные данные
Выведите два числа — индексы элементов i и j. Если ответов несколько, то выведите любой из них.
Если ответа нет, то выведите два нуля, разделённых пробелом.
Примеры
Ввод
6
10 3 5 3 11 9
Вывод
2 5
Ввод
4
5 5 5 5
Вывод
0 0 не проходит 6 тест, неправильный ответ