Comments 44
void checkStack() {
int a;
int b;
if (&a < &b) {
cout << "Up" << endl;
} else {
cout << "Down" << endl;
}
}
Ну и сравнение указателей так просто не сработает. Надо к интам закастить.
Примерно так:
bool CheckStack(int *p)
{
int var;
if ((int)p == 0)
return CheckStack(&var);
return (int)(&var) < (int)p;
}
Вызвать исходно с нулем. Если вернет 1, значит стек растет сверху вниз.
Тут рекурсия — последовательный вызов, так что гарантировано локальная переменная из первого экземпляра раньше по стеку, чем та же переменная из второго экземпляра.
Сваливаем всё в кучу и идем взвешивать.
Ответ: 10 — (wight % 1) * 10.
В реальной жизни — почти любую задачу можно решить не одним, а 3-мя вариантами как минимум. В результате:
1) В уме: «Это ответ не правильный, у меня такого в вариантах нет», вербально: «Не правильно».
2) В уме: «Я тут начальник, не понял, слишком умный что-ли?», вербально: «Вы нам не подходите».
3) В уме: «Хм… интересно, как я до этого не додумался...»
И перехожу уже с темы набора — от претендентов на реальную работу.
По претендентам максимальный плюс может выдать только TL или кто там главный в проекте. Но до него не дойдёт, отсеют по формальным признакам. Шлак. Тест не прошёл.
Мы отказались от этого.
Да, ваше решение действительно красивое и креативное, если понятие «весы» не определено.
import collections
import aa_sbst # Дерево, можно поиметь через "pip install aa_sbst"
def NGEs(arr):
ans = [-1]*len(arr) # Здесь накопим результат
t_el = collections.namedtuple('t_el', 'v, pos')
t = aa_sbst.sbst()
for pos, v in enumerate(arr):
# Цикл по ранее встреченным меньшим элементам
for el in t.backward_from(t_el(v, 0), False):
ans[el.pos] = v
t.remove(el) # Второй раз обрабатывать не будем
t.add(t_el(v, pos))
return ans
По скорости: 100000 за секунду с О(n*ln(n)) в худшем случае.
def nge(arr):
result = [-1] * len(arr)
current_greater = arr[-1]
for i in range(len(arr) - 2, -1, -1):
if arr[i] < current_greater:
result[i] = current_greater
else:
current_greater = arr[i]
return result
4000000 за секунду. O(n).
>>> nge([4, 5, 2, 25])
[25, 25, 25, -1]
А должно быть [5, 25, 25, -1]Для массива [1,2,3] оно выдаст [3,3,-1], а надо [2,3,-1].
def nge(arr):
result = [-1] * len(arr)
current_greater = arr[-1]
for i in range(len(arr) - 2, -1, -1):
if arr[i] < arr[i+1]:
current_greater = arr[i+1]
if arr[i] < current_greater:
result[i] = current_greater
else:
current_greater = arr[i]
return result
Так, вроде, работает правильно.
WA на тесте [3, 1, 2, 4]
Это вопросы из корейского самсунга что ли, или почему английский такой корявый? Или вы сами придумываете задачи, потом их коряво переводите и выдаёте за оригинал?
Английский вариант обычно публикуем без изменений, если ошибки не влияют на смысл.
ps. Кстати, большая часть вопросов — из азиатского сегмента (Индия, Китай, Япония, Корея)
1 винт от 1 машины, 2 винта от 2 машины и т.д.
найти дефект массы и поделить на единичный дефект, получим номер машины
D I . S T A . N C E
x + + + X
I D . T U B . E C N
D O . C U M . E N T
x + + + X
O D . D V N . T N E
H T . T Q . Y A D
x - - X
T H . S P . D A Y
хз как расшифровывать 7-буквенные слова. Но допустим, что в конце DAY. А в начале может быть всё что угодно и как попало.
задача 1. как-то очень криво сформулирована.
Приходится домысливать за топикстартера! Всё по-взрослому, вот тебе хотелки, сам себе сделай ТЗ!
Поэтому под кат не прячу. Пусть будет спойлер, а авторам пусть будет стыдно.
Допустим, так. Локации пронумерованы. Дана матрица смежности. Если локации смежные, то расстояние между ними 1. В некоторых локациях есть источники (потому что локаций — до 20 — по размеру матрицы, а источников — до 5).
Тупое решение, благо, размер матрицы позволяет.
Получаем матрицу расстояний из матрицы смежности. Это — тупо, возвести матрицу смежности в 20 степень, где (умножение) — это сложение, а (сложение) — это минимум. А единичка смежности считается 1 расстояния, нолик смежности считается бесконечностью, а на диагонали стоят 0. (расстояние до самих себя, естественно, нулевое).
Для каждой локации посчитать сумму расстояний до всех источников.
- Найти минимум.
элементарно ватсон!
ptrdiff_t delta(char* caller) {
char inside;
return &inside - caller;
}
bool stack_grows_up() {
char caller;
return delta(caller) > 0;
}
def NGEs(xs):
return [
next( # первая итерация
(y for y in xs[i+1:] if y > x), # итератор по следующим бОльшим элементам
-1) # дефолт первой итерации
for n in (len(xs),) # трюк с переменной внутри генератора
for i in range(n)
for x in (xs[i],) # трюк с переменной внутри генератора
]
Выпуск#22: ITренировка — актуальные вопросы и задачи от ведущих компаний