I have noticed that the time multiplier for PyPy 2 has been reduced to 2X recently (it was done during the contest MOSCWJ19 but was in fact not only for that contest, but for all contests to come). When and why was this decision taken (I understand it might have something to do with the previous long challenge question BINSTR having brute force solutions passed in PyPy due to a generous TL of 1.5 s)?
I think that even 2X for PyPy 2 is not good enough sometimes. Python is very slow with recursion and large 2D (or multidimensional) lists (same for PyPy), so much so that most of the PyPy solutions for problem TWOFL from June 2018 Long Challenge were running above 8s. My own solution to that problem ran in 10.81 s (gorre_morre’s solution ran in 14.14s and algmyr’s ran in 9.04 s). I know that those solutions might not have been the best and optimum ones (as there exist much faster PyPy solutions) but then having a 2X for PyPy in these kinds of problems would certainly be problematic (because then you don’t know if your solution is intended to pass but isn’t passing due to tight TL for PyPy or otherwise), especially if such problems happen to be in short contests.
I think a 3.5-4 X time multiplier should be good enough for most of the purposes (please note that I don’t know the scaling of many other algorithms and methods like FFT and all so even this might be too slow?).
PS: I do understand that it is not possible to set a universal time multiplier that’d work for all problems all the time, that’s why I also want to know what do you guys think?
PS2: Asymptotically, these two solutions of mine Solution 1 (TLE) (during contest) and Solution 2 (AC) (after contest) are the same, yet one gets TLE while the other gets AC, whereas an equivalent of Solution 1 in C++ passes well under the TL (I know there is a very small optimization in Solution 2, but it seems unnecessary when an equivalent of Solution 1 in C++ passes well under the TL). This is what makes me think that 2X for PyPy 2 is not enough.