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

Автор wnmrmr, история, 3 года назад, По-английски

Hi, if you compare this submission (296ms) with this one (3025ms), this is the difference:

I think this is crazy because g is a vector<vector<int>> with size 3 * 10^5 with at most 3 * 10^5 entries, and the function build that returns g is called once in the program. This huge time difference is the same on both 64-bit C++ compilers, but it is not present in the 32-bit C++ compiler.

UPD: Calling the function build twice solves the problem

  1. Normal submission (3041ms)
  2. Changed submission (327ms)

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

»
3 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by wnmrmr (previous revision, new revision, compare).

»
3 года назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

Looks like the problem is in tuple. Removed it and got 300 ms: link

Would be nice to know, why it happens.

»
3 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by wnmrmr (previous revision, new revision, compare).

»
3 года назад, скрыть # |
 
Проголосовать: нравится +42 Проголосовать: не нравится

So $$$x = 3000$$$ and $$$2x = 300$$$? Hmm...

»
3 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Probably that particular version of compiler doesn't handle captures of structured bindings well.