Эффективно отвечать на запросы Subarray H-IndexC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Эффективно отвечать на запросы Subarray H-Index

Сообщение Anonymous »

Я работаю над интересным вопросом о h-index j-index j-index. Будут вопросы Q, каждый из которых дает диапазон [L, R] и спрашивает, что будет H-индексом автора, который публикует только документы от индекса L до R включительно. N, Q и All P находятся от 1 до 2*10^5. < /p>
Вот пример ввода < /p>

Код: Выделить всё

4 2
5 7 4 1
2 3
3 4
< /code>
Вывод должен быть < /p>
2
1
< /code>
Здесь p = [5, 7, 4, 1], запрос на диапазоне [2, 3] должен дать 2, потому что 2 статьи в этом диапазоне цитировались не менее двух раз (специфически 7 и 4 раза). Запрос на [3, 4] должен дать 1. < /P>
Проведение двоичного поиска на субраре каждого запроса o (qnlogn). Этот код является моей попыткой решения проблемы. К сожалению, это дает правильные ответы, но превышает 3 второго времени. Сроки предназначены для выполнения всей программы, так что это включает время для чтения ввода. Я также попробовал Scanf 
и cin.tie (0); ios :: sync_with_stdio (0); для ускорения ввода/вывода, но это все еще превышает ограничение по времени.
#include
int p[200005];
int main() {
using namespace std;
int n;
cin >> n;
int q;
cin >> q;
for (int i = 0; i < n; i++) {
cin >> p[i + 1];
}
for (int i = 0; i < q; i++) {
int l;
cin >> l;
int r;
cin >> r;
int lo = 1, hi = n;
while (lo = mid) {
lo = mid + 1;
} else {
hi = mid - 1;
}
}
cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... fficiently
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»