Writing code faster during Competitive Programming in C++

11 May, 2022
This article focuses on how to implement your solutions and implement them fast while doing competitive programming.
Setup Please refer Setting up a C++ Competitive Programming Environment
Snippets Snippet is a programming term for a small region of re-usable source Code. A lot of modern text editors like Sublime provide you a functionality to automatically write a predefined snippet by just writing a keyword. One can speed up their implementation by using Snippets. So if you need to do a BFS or DFS(or any other code), you just need to press ‘Keyword+Tab’ to get it’s code.
How to add a snippet Adding a snippet in Sublime Text is pretty straightforward. Just navigate to Tools>Developers>New Snippet.
<snippet><content><![CDATA[
// Type your code here
]]></content><tabTrigger>ENTER KEYWORD HERE</tabTrigger></snippet>
Use this as your base template for a snippet and paste the code that you want to use in your Snippet by replacing the comment and trigger Keyword.
MacrosThey are a way to assign shorter notations to things that are usually longer to write.They can be easily written using #define.
Example 1:Before using Macros:
long long int a;vector<long long int> v;map<long long int, long long int> mp;
After using Macros:
// ll can be used instead of typing long long int#define ll long long int  ll a;vector<ll> v;map<ll, ll> mp;
Example 2:Before using Macros:
for (int i = 0; i < N; i++)    cin >> a[i];  for (int i = 0; i < N; i++) {    for (int j = 0; j < M; j++) {        cout << m[i][j] << endl;    }}
After using Macros:
// Use this macro instead of typing the whole// for-loop syntax#define FOR(a, c) for (int(a) = 0; (a) < (c); (a)++)  FOR(i, N)cin >> a[i];  FOR(i, N){    FOR(j, M)    {        cout << m[i][j] << endl;    }}
Example 3:
vector v;  for (int i = 0; i < N; i++) {    cin >> x >> y;    v.push_back(make_pair(x, y));}
After:
#define ll long long int#define MP make_pair#define pb push_back  vector<ll, ll> v;  for (int i = 0; i < N; i++) {    cin >> x >> y;    v.pb(MP(x, y));}
Note: Write your macros at the beginning of your code(refer to the template given below).
Using a TemplateUsing a template is one of the best idea to speed up your implementation. Keep your template ready that has your macros written in them already. This helps in reducing a lot of your time which otherwise would have gone in writing the whole code from scratch.I use the following template, you can use one that suits you.
#include "bits/stdc++.h"using namespace std;#define max(a, b) (a < b ? b : a)#define min(a, b) ((a > b) ? b : a)#define mod 1e9 + 7#define FOR(a, c) for (int(a) = 0; (a) < (c); (a)++)#define FORL(a, b, c) for (int(a) = (b); (a) <= (c); (a)++)#define FORR(a, b, c) for (int(a) = (b); (a) >= (c); (a)--)#define INF 1000000000000000003typedef long long int ll;typedef vector<int> vi;typedef pair<int, int> pi;#define F first#define S second#define PB push_back#define POB pop_back#define MP make_pairint main(){    ios::sync_with_stdio(0);    cin.tie(0);    int T;    cin >> T;    while (T--) {        int N;        cin >> N;        ll a[N];        FOR(i, N)        cin >> a[i];    }    return 0;}
Thank you for reading, please let me know if you have some possible improvement or addition.
CPP-Competitive-Programming
C++
Competitive Programming
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Sorting a vector in C++
Polymorphism in C++
Friend class and function in C++
Pair in C++ Standard Template Library (STL)
std::string class in C++
Competitive Programming - A Complete Guide
Practice for cracking any coding interview
Arrow operator -> in C/C++ with Examples
Modulo 10^9+7 (1000000007)
Prefix Sum Array - Implementation and Applications in Competitive Programming