This is the snippet I have for FFT. But I feel it is slow in many cases.

One example is http://codeforces.com/problemset/submission/958/41610928 which takes nearly 3.85 seconds to pass for n=200000

Can somebody help me to optimise it.

Thanks.

# | User | Rating |
---|---|---|

1 | tourist | 3624 |

2 | Um_nik | 3468 |

3 | mnbvmar | 3363 |

4 | Petr | 3330 |

5 | wxhtxdy | 3329 |

6 | LHiC | 3300 |

7 | sunset | 3278 |

8 | V--o_o--V | 3275 |

9 | Vn_nV | 3182 |

10 | dotorya | 3156 |

# | User | Contrib. |
---|---|---|

1 | Radewoosh | 191 |

2 | Errichto | 184 |

3 | rng_58 | 160 |

4 | PikMike | 158 |

5 | Petr | 156 |

6 | Vovuh | 153 |

6 | Um_nik | 153 |

6 | neal | 153 |

9 | Ashishgup | 152 |

10 | majk | 151 |

10 | 300iq | 151 |

This is the snippet I have for FFT. But I feel it is slow in many cases.

One example is http://codeforces.com/problemset/submission/958/41610928 which takes nearly 3.85 seconds to pass for n=200000

Can somebody help me to optimise it.

Thanks.

↑

↓

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Mar/20/2019 19:33:01 (f2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|

Since module is small (equal to 1009) in this task you don't need to use

`sqrt(MOD)`

hack and can manually multiply two polynoms (but don't forget to take resulting product modulo 1009 after each multiplification).Yeah. In this case I did that to get AC. But how to improve it in general ??

In case of this problem, maybe I'm blind but I see you using

`fft_modulo`

instead of`mul`

which is definetely use`sqrt(MOD)`

-hack.Regarding optimizing in general case: I'm sure I've read many articles, but I can't find anything (maybe because they are on Russian). But standart trick are to precalc all roots (

`wlen`

and`w`

in your code) — it gives boost with multiple using of`mul`

. Precalcing`bit reverse`

(or calculating it in the linear time) can give a little speed up.Anyway, you can always look at realization of fft from top participants if you have enough time and patience.

Oh sorry. I misunderstodd your first comment.

And thanks for the pre-calculation parts.