All streams
Search
Write a publication
Pull to refresh
52
0

User

Send message
Интересное решение, согласен с ним.
А можно ли еще быстрее? :)
Почему?
Конечно, min и max сначала надо забить нулями, так как в противном случае программа будет падать при доступе к непонятному a[min] на первой итерации :)
Да, получается немного быстрее — 2 * n — 1 в худшем и n в лучшем случае.

А можно сделать еще быстрее?
Не совсем понял :)
Нуль — да, не учтется.

А отрицательное обработается нормально.
При сложении может произойти переполнение ;)
Есть другой вариант:
a = a ^ b;
b = a ^ b;
a = a ^ b;

(^ = xor, искл. или, мин. сумма, сумма по модулю 2, ...)
Есть еще одна интересная задача на «подумать».
Дан массив длинны от N. Можно найти в нем минимум и максимум простым способом:
<code>for(i = 0; i < n; ++i)
{
    if(a[i] > a[max]) max = i;
    if(a[i] < a[min]) min = i;
}</code>

Несложно посчитать, что программа будет производить 2*n сравнений.
Можно ли решить задачу за меньшее число сравнений?
Вынесение случая с одним отрицательным в отдельный случай не имеет смысла :)

Правда, это придется делать достаточно сложно по количеству действий — при проходе по массиву надо:
1) проверить число на равенство нулю
2) проверить на отрицательность
3) найти минимум и максимум среди отрицательных
4) найти минимум среди положительных.
Это — 5*n.

А если не заботиться о переполнении, то можно за один проход найти произведение всех чисел, за второй — найти максимальное p / a[i].
Я что-то не понимаю, или эта задача решается циклом от 0 до n/2 c телом swap(a[i], a[n — i — 1])?
Это весьма неудивительно — проверка числа на простоту длится sqrt(n), значит N чисел проверятся за O(N*sqrt(N)).

В то время как грамотное решето работает O(N), примитивное — как описано в статье, O(Nlog(log(N))). Для миллиона — разница в 1000 раз для грамотного и в 231 — для простого.
1. vim /etc/passwd
2. меняем uid с не-0 на 0
3. логинимся
4. ???
5. PROFIT!
Можно было добавить про pragma/attribute packed ;)
ulimit -s
У меня — 8 мегабайт :)
Да, согласен.
Прошу прощения за дезинформацию.
Вместо bind можно поставить nsd, он легче.
Кстати, kill — это процесс :)
cat /proc/user_beancounters
df -i
df -h

Тут лежат все лимиты openVZ, которые могут что-то зарезать.
Зачем говорить, что openVZ — зло, если зло — урезанные лимиты и/или оверселлинг, позволяемый им?
Видимо, вы ведете себя с поддержкой неадекватно :)
Это гуглится. Даже в комментарии ниже есть фотка, которая показывает, какие у них компы.

Но лично я там не был и ничего не видел, да.

Information

Rating
Does not participate
Registered
Activity