Блог пользователя og_prakash

Автор og_prakash, история, 5 месяцев назад, По-английски

Whats the difference between these 2

map.lower_bound(val) vs lower_bound(map.begin(),map.end(),val)

i was getting tle on https://codeforces.com/contest/1902/submission/239546603

correct on https://codeforces.com/contest/1902/submission/239546733

with just 1 line change

TLE -> auto it = lb(mp2[(p4.fi+n)][p4.se].begin(), mp2[(p4.fi+n)][p4.se].end(), l-1);
CORRECT -> auto it=mp2[(p4.fi+n)][p4.se].lb(l-1);

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
5 месяцев назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

A similar answer for std::set is here.

»
5 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

see this

»
5 месяцев назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Short answer -> If you are using a data structure like a set or map always use their own implementation of lower_bound() they are faster, probably because of some internal implementation.

For arrays and vectors you can use the normal lower bound. My guess is that it has something to do with the accessing time of the elements while performing the operations.