시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
3 초 | 256 MB | 1 | 0 | 0 | 0.000% |
Недавно на лекции в университете Вася узнал, что такое декартово дерево. Декартово дерево — это двоичное дерево, в каждом узле которого хранятся два значения: ключ и приоритет. Оно является деревом поиска по множеству ключей и кучей на максимум по приоритетам, то есть
На контрольной работе Васе досталась следующая задача: дано n пар чисел вида (ключ, значение), i-я из которых выглядит как (i, yi), и нужно узнать, сколько существует способов построить декартово дерево, используя как ключ вершины i число i, а как приоритет — yi. Поскольку это число может оказаться достаточно большим, требуется найти остаток от его деления на число 109+7.
Два декартовых дерева считаются различными, если у них разные корни, или существует вершина, имеющая разных предков в этих деревьях.
Первая строка содержит одно натуральное число t — число тестовых примеров во входных данных. Далее следуют описания тестов.
Описание каждого теста состоит из двух строк. Первая строка содержит одно целое число n (1 ≤ n ≤ 2·105) — количество вершин в дереве. Вторая строка содержит n целых чисел yi (1 ≤ yi ≤ 109) — приоритет i-й вершины дерева.
Сумма n по всем тестам не превосходит 2·105.
Для каждого теста в отдельной строке выведите одно целое число — количество различных декартовых деревьев, которые можно построить на данном наборе приоритетов, по модулю 109+7.
2 4 2 4 1 3 6 7 3 3 1 1 3
1 10
Contest > Russian Code Cup > 2015 > RCC 2015 Eliminatory D번