- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
if (tp==-1 || c==a[tp]-'a') tp++; else {
l[ts+1]=la; p[ts+1]=ts;
l[ts]=l[tv]; r[ts]=tp-1; p[ts]=p[tv]; t[ts][c]=ts+1; t[ts][a[tp]-'a']=tv;
l[tv]=tp; p[tv]=ts; t[p[ts]][a[l[ts]]-'a']=ts; ts+=2;
tv=s[p[ts-2]]; tp=l[ts-2];
while (tp<=r[ts-2]) { tv=t[tv][a[tp]-'a']; tp+=r[tv]-l[tv]+1;}
if (tp==r[ts-2]+1) s[ts-2]=tv; else s[ts-2]=ts;
tp=r[tv]-(tp-r[ts-2])+2; goto suff;
}
guest 16.09.2014 22:48 # +2
3.14159265 16.09.2014 23:30 # +2
gost 17.09.2014 08:46 # +1
Здесь.
bormand 17.09.2014 09:48 # +3
По опыту - при мало-мальски нормальном алгоритме (не брутфорс) прога никогда не упиралась в память или таймауты...
P.S. Хотя, возможно, из-за такого отношения к задротству мы дальше региональных туров и не покатались...
defecate-plusplus 17.09.2014 10:23 # +1
ололо
первая и последняя для меня олимпиада по информатике проводилась за уютными синими борманд турбо с++
bormand 17.09.2014 10:48 # 0
Потом в физмате - те самые синеокие борманд-пасцаль, да борманд-хуй-поймешь-си-или-кресты. Олимпиады были пиздец унылые и проверялись левой пяткой преподов. Стимула как-то по-особому готовиться к ними не было никакого.
А вот когда в институте катались на ACM - там уже можно было юзать шестую (вроде бы) вижуалку со всеми вытекающими.
> последняя
А мне не хотелось отказываться от халявной командировки на пару дней. Так что катались частенько :) Заодно закупались всяким железом да cd-r, которые в нашем городке стоили дороже. Ну и трофеи от олимпиад остались на память - флешка, мышка, да годная клава.
defecate-plusplus 17.09.2014 11:27 # 0
но ещё лучше, когда тебя в ней не напрягают и не возлагают надежд
на ту областную "олимпиаду" по программированию мы поехали вообще без подготовки, т.к. нас никто не натаскивал от слова вообще
максимум догадывались про сортировку пузырьком
так что просто весело провели время (и заодно я посмотрел, в каком плачевном материальном состоянии находится областной технический вуз)
bormand 17.09.2014 11:45 # 0
Да никто особых надежд на нас и не возлагал... Все прекрасно понимали, что если кто-то прошел на региональный тур, поехал туда и занял не последнее место - это уже круто.
> напрягают
А из натаскиваний было только прорешивание задачек за неделю до олимпиады. Выбирали что поинтересней, да решали... А чтобы дротить каждый день без перерывов - такого у нас не было.
3.14159265 17.09.2014 13:58 # 0
Прочитать как "дотить каждый день". Задумался.
bormand 17.09.2014 14:00 # 0
P.S. Первая дота, емнип, уже была, но не зацепила.
3.14159265 17.09.2014 14:09 # 0
>Не, мы тогда рубились в контру/старкрафт в машзалах
Нам нигде и никогда такого не позволяли. Разве что в школе пару уроков кваки было. А, и в универе на древних компах практика дюка нюкема, тоже один или джва раза.
Зато в универе те кто сумели разлочить, сидели на лентах в инете. С тогдашним дефицитом траффика, это было самое ценное времяпровождение.
defecate-plusplus 17.09.2014 14:26 # 0
тем временем инет был в основном только в терминальном доступе к линуксячему серверу
сидели в инете, читали новости и проверяли почту через links
зато в школьные годы я как раз ходил в 10-11 классе на курсы информатики, если быстро выполняешь план занятия, можно было бы поиграть в need for speed 4 на минимальной графе, или с товарищем в фифу-98
был отличный стимул сделать за 20 минут то, что рассчитано на час, и потратить оставшееся время на поиграть
тем более, что дома у меня не то что компа, даже сраной денди не было
3.14159265 17.09.2014 14:35 # 0
nfs3,4 - божественные игры. И божественный саундтрек.
bormand 17.09.2014 14:52 # 0
Просто этот зал был довольно мощным (в то время как будущие программисты писали лабы на дерьме с 98й виндой, в этом зале изучали ворд экономисты и менеджеры) и часто простаивал, а админил его наш хороший друг. Его начальник, входя в зал, ржал над тем, как некоторые запоздало пытаются свернуть контру и запустить борманд паскаль, после чего разгонял нас. А минут через 5 игра продолжалась...
P.S. Вспоминается, как мы just for lulz меняли заставку в главном меню контры на скриншот из BP.
P.P.S. А вот инет там был только платный (помимо школьного анлима, который дико лагал).
bormand 17.09.2014 10:24 # 0
bormand 17.09.2014 15:37 # +1
Ибо наивный поиск "aaa...b" в "aa...aa" длится вечность. KMP тут, наверное, помог бы.
3.14159265 18.09.2014 13:40 # +2
Et tu, Bjarne?!
Даже в крестах, в 2011 не осилили тривиальный строковой алгоритм 70-х?
>KMP тут, наверное, помог бы.
А я предупреждал об возможности атак...
3.14159265 17.09.2014 12:03 # +5
Сразу виден настоящий программист. Ленивый.
Пока поцоны пишут велосипеды, борманд берет либу, решает задачу в 10 раз быстрее и идёт читать ГК.
roman-kashitsyn 17.09.2014 12:42 # +1
Мне кажется, у них может быть деформированное восприятие. Они вероятно, привыкли писать быстро, монолитно, не задумываясь о мелочах, в расчёте на положительный кейс.
А унылой реальности нужно писать так, чтобы код было максимально удобно читать и с рассчётом на то, что любая хрень может сломаться в любой момент.
Правда, это лишь измышления, напрямую с успешными олимпиадниками мне не вот прям работать приходилось. Видимо, они не опускаются до той работы, что достаётся мне.
1024-- 17.09.2014 13:00 # +1
В это время админ-программист только начинает рисовать диаграмму классов универсального решения этой и подобных проблем на 20 лет вперёд.
roman-kashitsyn 17.09.2014 13:10 # 0
3.14159265 17.09.2014 14:03 # +1
Думаю со временем каждый учится душить внутри себя подобные порывы и расставлять приоритеты.
bormand 17.09.2014 13:57 # +3
"Хуяк-хуяк и в продакшен", имхо, тоже важное умение. Быстрое прототипирование, проверка идей, одноразовые скрипты и т.п. Самое сложное - заставить себя выкинуть этот прототип на помойку, а не обвешивать его деталями и проверками, превращая в ядро большой и сложной системы...
kegdan 18.09.2014 17:03 # +1
А потом понимаешь что вторая итерация не наступит никогда... никогда...
Если конечно кто нибудь не удалит код
3.14159265 16.09.2014 23:33 # +2
kegdan 18.09.2014 14:52 # +3
олимпиадник тернарники не осилил?
3.14159265 18.09.2014 14:54 # +1
В определённых кругах тернарники спорная штука.
kegdan 18.09.2014 14:55 # +2
inkanus-gray 18.09.2014 16:57 # +1
kegdan 18.09.2014 16:59 # +2
inkanus-gray 18.09.2014 18:49 # 0
kegdan 18.09.2014 18:59 # 0
max = a + (b-a)* (int)((a+b)/b==a)
inkanus-gray 18.09.2014 19:09 # 0
kegdan 18.09.2014 19:10 # 0
inkanus-gray 18.09.2014 19:12 # 0
kegdan 18.09.2014 19:14 # 0
1024-- 18.09.2014 19:11 # +4
x = (a + b) / 2
А поклонников старшего бита посылать за числами большей разрядности.
kegdan 18.09.2014 19:15 # 0
gost 18.09.2014 18:18 # +1
inkanus-gray 18.09.2014 18:23 # 0
Убедитесь сами: http://gcc.godbolt.org/
P.S. Проверил, шланг заменяет на cmov, а питух-гцц оставляет умножение.
gost 18.09.2014 18:29 # 0
А зачем тогда в коде заменять ветвление на умножение?
inkanus-gray 18.09.2014 18:30 # 0
gost 18.09.2014 18:34 # 0
ИМХО, красивее.
inkanus-gray 18.09.2014 18:39 # +3
А так?
kegdan 18.09.2014 18:55 # +1
inkanus-gray 18.09.2014 19:01 # +4
l[N], r[N] → lr[2][N]
p[N], s[N] → ps[2][N]
tv, ts → x[2]
И так далее.
kegdan 18.09.2014 19:13 # +1
inkanus-gray 18.09.2014 19:20 # +2
3.14159265 18.09.2014 19:39 # +2
В более общем случае кто-то будет городить свищи и горы тернарников, а кто-то напишет ассоциативный массив.
inkanus-gray 18.09.2014 19:41 # +4
3.14159265 18.09.2014 19:43 # 0
Хотя думаю оно сумеет в cmov...
Не хотелось бы гадать, ибо пути компилятора неисповедимы.