Я решаю одну проблему из прошлых соревнований по программированию, поэтому мне нужна помощь, я объясню проблему в одном предложении. У вас есть массив размером N, где N может достигать 10^5. А затем во второй строке у вас ровно N элементов. Итак, теперь вам нужно подсчитать способы выбора трех элементов из массива, чтобы они были в порядке убывания. Вот примерДля данного массива подсчитывайте комбинации из трех элементов в порядке убывания
N = 4 и массив выглядит так: 190, 180, 170, 168. У нас есть ровно четыре способа выбрать эти три элемента. 1. (190, 180, 170) 2. (190, 180, 168) 3. (190, 170, 168) и 4. (180, 170, 168)
Я думаю, что это необходимо решить с помощью дерева сегментов, Не знаю, с каким аргументом я должен создать дерево. Заранее спасибо.
Являются ли элементы уникальными? – rici
Самое простое решение, так как вы знаете, что всегда будете выбирать три элемента - сортировать массив в порядке убывания, а затем перебирать его с помощью трех встроенных циклов, например, каждый следующий цикл начинается с предыдущего индекса + 1. Он будет работать только если элементы являются uniqe, и если вы не заботитесь о времени исполнения. –
Все элементы уникальны, и вы не можете делать грубую силу, потому что N может идти до 10^5, и это будет (10^5)^3, что слишком много – someone12321