Двач.hk прислал битые данные.
Вы видите копию треда, сохраненную 31 июля 2021 года.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
task.png15 Кб, 640x252
Помогите решить задачу 2069556 В конец треда | Веб
Аноны, помогите новичку-дурачку решить задачу на JS.
2 2069560
Если я правильно понимаю, там надо пройтись циклом по значениям, которые хранит массив, сравнить их, и если совпадают, то переменная, хранящая значение "максимум людей" ++. Но как это оформить в коде, я так и не понял.
Как это записать, аноны? Выручайте, вся надежда на вас! С меня океан благодарности!
3 2069562
бамп
4 2069566
бамп
5 2069574
бамп
6 2069585
бамп
7 2069606
Хоть кто-нибудь, помогите решить эту блядскую задачу.
8 2069629
Heeeeeelp
9 2069643
Помогите
10 2069673
>>69556 (OP)
Надо завести словарь и считать количества, потом найти максимальное.
Можно сгенерировать массив со всеми значениями, а потом найти элемент с максимумом вхождений, но это похуже.
11 2069722
>>69556 (OP)
для каждого интервала [x, y) добавить в новый массив (x, 1) (y, 0)
отсортировать этот новый массив, заметь что я наперенно добавил второй конец с 0, чтобы в отсортированном массиве закрывались старые интервалы в начале, потому что из второго примера следует что в момент y чел уже не находится в комнате, поэтому его нужно удалить прежче чем добавлять новых людей.

дальше завести счетчик count и обойти этот массив очевидным образом.
для элемента (x, type)
if (type == 0) count++;
else {
res= max(res, count)
count--;
}

и в конце return res;
12 2069778
Вот держи, наговнокодил тебе. Ну зато без сортировки и за О(n), лол

let arr = [[2,10],[3,4], [6,9]];
let enter = [];
let exit = [];
let count = 0;
let maxcount = 0;

for (let i=0; i<arr.length;i++) {
if (enter[arr[0]]!==1)
{enter[arr[0]] = 1;}
else {enter[arr[0]]++;}
if (exit[arr[1]]!==1)
{exit[arr[1]] = 1;}
else {exit[arr[1]]++;}
}

for (let j=1; j<=24; j++) {
if (enter[j] >= 1)
count = count + enter[j];
if (exit[j] >= 1)
count = count - exit[j];
if (count > maxcount)
maxcount = count;

}

console.log(maxcount);
12 2069778
Вот держи, наговнокодил тебе. Ну зато без сортировки и за О(n), лол

let arr = [[2,10],[3,4], [6,9]];
let enter = [];
let exit = [];
let count = 0;
let maxcount = 0;

for (let i=0; i<arr.length;i++) {
if (enter[arr[0]]!==1)
{enter[arr[0]] = 1;}
else {enter[arr[0]]++;}
if (exit[arr[1]]!==1)
{exit[arr[1]] = 1;}
else {exit[arr[1]]++;}
}

for (let j=1; j<=24; j++) {
if (enter[j] >= 1)
count = count + enter[j];
if (exit[j] >= 1)
count = count - exit[j];
if (count > maxcount)
maxcount = count;

}

console.log(maxcount);
13 2069784
>>69778
а теперь arr = дерьмо размером 10^6 из пар (a, b) где a, b числа от 0 до 2^64

ой, а что же делать? как получить линию?
14 2069829
>>69778
Макаба съела индексацию. Короч, там где цикл фор двойная индексация - первый индекс равен i.
>>69784

>arr = дерьмо размером 10^6


Ну и?
У меня один проход по этому массиву.

>где a, b числа от 0 до 2^64


Это была бы другая задача. Из условия ясно, что a, b - это время, которое может быть только от 1 до 24.
15 2069839
>>69829
временем может быть и unix timestamp например.
или микросекунды в пределах дня и т.д.
16 2069841
>>69839

>временем может быть и unix timestamp например.


>или микросекунды в пределах дня


Просто переводим все в часы и дальше работаем как обычно.
Проблемс?
17 2069859
>>69841
промежуток может быть > 1 дня.
Один хуй надо уточнять условия, мб твой вариант и подразумевался.
18 2069878
>>69859
Ну значит будет не 24 часа, а количество дней *24.
При переводе в часы сразу и запишем в таком виде.

>надо уточнять условия


Ну так там все ясно из примеров ввода.
А вообще кидай свой вариант, если знаешь как лучше.
image.png17 Кб, 442x205
19 2069915
Простите, что на другом языке, все-таки задача про алгоритмы, а не про особенности языка.
Скажите, пожалуйста, можно ли решить эту задачу не за квадратичное время? Я не догадался.
image.png17 Кб, 444x206
20 2069943
>>69915
Обосрался, порядок важен, вот так должно быть.
21 2069948
>>69915
Ну я вот тут решил за О(n), правда наговнокодил.
А у тебя решено неправильно.
Вот такой массив сломает твою программу
[2,7], [3,8], [4,9], [5,10]
22 2069952
>>69948
Я уже осознал свою ошибку и исправился.
Не понимаю петушиный твой язык, можешь словами описать алгоритм? Такое чувство, что нихуя не за O(N).
image.png51 Кб, 555x689
23 2069974
>>69952
там O(n) если допустить, что значения интервалов в маленьком диапазоне.

>>69722
здесь же (на картинке то же самое) nlogn. Это оптимально для произвольных значений интервалов.
24 2069988
>>69952

>Я уже осознал свою ошибку и исправился.


Чего ты там исправился, у тебя код такой же остался, ты зачем-то сам массив руками подогнал под код.
25 2069993
>>69988
Вы долбоеб и ничтожество. Я поменял массив, потому что на нем первый код неправильно работал. Второй код работает правильно. Они различаются.
26 2069998
>>69993
Пиздец ты дегенерат конченый, конечно.
27 2070000
>>69998
Злобная и тупая мразь, вот ты кто!
28 2070024
>>70000
Ебаный кретин, чтоб ты сдох мразь.
Рака яиц тебе, гнида
image.png33 Кб, 803x361
29 2070987
30 2071187
>>70987
а если перенести [1, 3] во втором примере в конец списка?
image.png46 Кб, 806x501
31 2071272
32 2071474
For fufufuf
33 2072224
For
Обновить тред
Двач.hk прислал битые данные.
Вы видите копию треда, сохраненную 31 июля 2021 года.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски