Codeforces and Polygon may be unavailable from December 6, 19:00 (UTC) to December 6, 21:00 (UTC) due to technical maintenance. ×

ShardsOfNarsil's blog

By ShardsOfNarsil, 22 hours ago, In English

Does having templates like this:


#define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define pb push_back #define eb emplace_back #define F first #define S second #define sz(x) int((x).size()) #define rep(i, a, b) for (int i = a; i < (b); ++i) #define per(i, a, b) for (int i = (b)-1; i >= (a); --i)

useful in anyway or is it just preference?

  • Vote: I like it
  • +7
  • Vote: I do not like it

»
22 hours ago, # |
  Vote: I like it +4 Vote: I do not like it

It is useful because it allows you to write code faster in theory, however I doubt its effect on your performance is significant in any way.

  • »
    »
    21 hour(s) ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    yeah thats what i was thinking. I personally feel like your performance dont depend much on your typing speed especially for harder questions where a lot of thinking is involved.

»
22 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

These templates will help you not to write long commands

»
18 hours ago, # |
Rev. 3   Vote: I like it +8 Vote: I do not like it

Templates could save up to 20 minutes of coding time for me every contest, which doesn't give significant performance rise. So for me it provides better QoL but not rating boost.

Maybe another point is that templates make your code cleaner (e.g. modular integer classes, rep(i,x,y) macros)

  • »
    »
    17 hours ago, # ^ |
      Vote: I like it +4 Vote: I do not like it

    I don't think macros are that great. It can be confusing for others to look at your code

»
18 hours ago, # |
  Vote: I like it +19 Vote: I do not like it

Those are mostly preference and convenience, not saving that much time at all. However, some bigger templates of things like segment tree can save lots of time rather than having to code out all the functions. These small things you listed are just preferences, with possibly a few seconds total max saved.

  • »
    »
    12 hours ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    yeah copy pasting well know data structures and algos are obviously time savers. I was mostly talking about these kind of short cuts.

»
11 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

when they are useful they are very nice, its just not that often, but id rather avoid the annoying feeling of coding something complicated that i know well during contest

  • »
    »
    8 hours ago, # ^ |
    Rev. 2   Vote: I like it +1 Vote: I do not like it

    I am talking about macros not standard data structures like trie or segment tree. Obviously no one is gonna code up a segment tree or sparse table during contest.

»
9 hours ago, # |
  Vote: I like it +22 Vote: I do not like it

I would say the main benefit of these (for me) is that it prevents me from doing the dreaded

for (int j = 0; j < n; i++) {
    // code
}
»
7 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

I don't use templates very often tho :) They are a bit annoying for me to have to remember all the settings and I prefer to see the regular code.

»
5 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

i don't think they make much difference i have seen newbies with a long list of utils and macros also people over 2400 just using pushback and some commonly used ones it totally depends your feel, some people find it time consuming to implement themselves others forget about what was it defined for so choose for yourself

»
54 minutes ago, # |
  Vote: I like it 0 Vote: I do not like it

I use defines just because it is more comfortable for me, for e.g., to write all(vec) instead of vec.begin(), vec.end(),but I do not think that I make a huge difference in time using defines)

But templates for algorithms or data structures really increase ur speed. Firstly, u can spend 1 minute to copy default seg tree instead of 5 mins to write it. Secondly, u can be sure that already written code works right and u do not need to find mistakes in it