Это полностью меняет задачу. Раз надо выбрать подотрезок, то есть непрерывную часть исходной последовательности, то просто перебираем все начала/концы подпоследовательности
для i от 0 до N-1 {
summ = 0;
для j от i до N-1 {
summ += A[j];
если abs(summ) > M
вывести A[i..j];
}
}
Павел Левченко: То, что данные читаются без ошибки - Вам просто везёт. Память берётся из кучи, остаток кучи на данный момент в данной версии компилятора под данной операционкой ни под что не выделен, поэтому никаких последствий и не возникает. Сменится что-нибудь и данные выйдут за пределы кучи (системное исключение), затрут другие данные в куче (неверный результат работы программы), затрут фрагмент самой программы (всё, что угодно).
Павел Левченко: new char [0] выделяет буфер размером, как ни странно, 0 символов. Указатель при этом выдаётся не NULL, но обращение по этому указателю приводит к неопределённому поведению программы.
new[1] выделит памяти на 1 символ. Возможно, с учётом выравнивания и блочного выделения памяти, там будет зарезервировано 16 байт, но гарантированно можно использовать только 1 символ, иначе переносимости программы не будет.
Adamos: Может ещё быть "совершенное группой лиц по предварительному сговору", если докажут, что руководство знало о действиях админа и не запретило установку пиратки.
Вот только лицензию они нарушили. Десктопная версия Win по лицензии позволяет одновременную работу только одного пользователя, неважно по RDP или непосредственно (за исключением техподдержки). Да и для подключения по RDP более одного пользователя надо модифицировать файлы винды, что тоже запрещено лицензией.
sbh: Ещё раз прочтите документацию - num_rows гарантированно работает только при буферизации ответа. Если в результате запроса миллионы строк, клиент должен будет получить их все прежде чем на значение num_rows можно будет полагаться.
65536: DOM на момент выполнения скрипта может ещё не быть готова, соответственно к не созданным ещё в DOM элементам не будут прописаны свойства и callback'и
65536:
var onReady = [];
var onReadyIdx = 0;
HTML-фрагмент 1
onReady[onReadyIdx++] = function callback1(){};
HTML-фрагмент 2
onReady[onReadyIdx++] = function callback2(){};
HTML-фрагмент 3
$(document).ready(function() {
var i;
for (i = 0; i < onReadyIdx)
onReady[i]();
}); jsfiddle.net/qr63nw5h
Royorso: Лучше всего - вынести все JS в один отдельный статический файл, тогда всё можно вызывать в одном .ready.
Можно извратиться, добавлять callback-функции в массив, а в конце документа добавить вызов .ready() с функцией, проходящей по массиву и вызывающей все callback-и.
65536: Callback-функция, указанная в $(document).ready() вызывается после создания DOM-модели страницы, а если модель уже создана, то функция вызывается сразу.
Таким образом если последовательность будет такой:
- выполнился первый JS (установил обработчик .ready);
- выполнился второй JS (переписал обработчик .ready);
- закончено создание DOM-модели,
то вызовется только последний обработчик.
Если же сменить последовательность например на
- выполнился первый JS (установил обработчик .ready);
- закончено создание DOM-модели,
- выполнился второй JS (переписал обработчик .ready);
то вызовутся оба обработчика.
У топикстартера загрузка идёт одним запросом в следующем порядке:
- HTML-фрагмент;
- первый JS-скрипт;
- HTML-фрагмент;
- второй JS-скрипт;
- HTML-фрагмент.
Таким образом к моменту второго вызова .ready() DOM-модель ещё не сформирована и первый обработчик не вызывается, а просто переписывается вторым.
Андрей Мохов: А в таком случае запрос всё равно работать не будет. Посмотрите на случай, когда имеется две пары подходящих приложений - (A, C) и (B, D). В этом случае на выходе можем получить строки
A, C
B, D
C, A
D, B
и две строки сверху будут относиться к разным парам.