For background, consider the standard namespace. In competitive programming, frequent practice is
usingnamespace std;
This is practical: we no longer need to prefix every identifier with std::. Terrible for production of course, but invaluable when time is of essence.
Of course, the reason this is considered bad practice is if you want to use something the std already predefines (especially an issue if you use bits). For instance
#include<bits/stdc++.h>usingnamespace std;
This code makes y1 unusable because it is already a symbol for a mathematical distribution in cmath. Naturally, one would want something like
Now, every y1 is replaced with _y1, which the compiler sees as nothing more than a variable name. This means that you can safely use y1 (while preprocessor will use the other version, a semantically safe alternative).
Alas, this extends and can be applied to anything one wants to "unuse" from the standard. For example, this gives you to opportunity to use "rank" instead of "rnk" in your functions.