Этого треда уже нет.
Это копия, сохраненная 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
Тред утонул или удален.
Это копия, сохраненная 31 июля 2021 года.

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

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