Hello every body reading this blog!
till now, Iv seen two types of users in codeforces :
- the ones who use several defines and functions as the constant part of their code... (#define int long long, #define pair<int, int> pii, etc)
- the ones who do not use defines and the same stuff above
now for example Benq is in the first type of users as you can see this part above all of his codes :
//start ********************
include <bits/stdc++.h>
using namespace std;
typedef long long ll; typedef long double ld; typedef double db; typedef string str;
typedef pair<int,int> pi; typedef pair<ll,ll> pl; typedef pair<ld,ld> pd;
define mp make_pair
define f first
define s second
typedef vector vi; typedef vector vl; typedef vector vd; typedef vector vs; typedef vector vpi; typedef vector vpl; typedef vector vpd;
define sz(x) (int)x.size()
define all(x) begin(x), end(x)
define rall(x) (x).rbegin(), (x).rend()
define rsz resize
define ins insert
define ft front()
define bk back()
define pf push_front
define pb push_back
define eb emplace_back
define lb lower_bound
define ub upper_bound
define FOR(i,a,b) for (int i = (a); i < (b); ++i)
define F0R(i,a) FOR(i,0,a)
define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
define R0F(i,a) ROF(i,0,a)
define trav(a,x) for (auto& a: x)
const int MOD = 1e9+7; // 998244353; // = (119<<23)+1 const int MX = 2e5+5; const ll INF = 1e18; const ld PI = acos((ld)-1); const int xd[4] = {1,0,-1,0}, yd[4] = {0,1,0,-1};
template bool ckmin(T& a, const T& b) { return a > b ? a = b, 1 : 0; } template bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } int pc(int x) { return __builtin_popcount(x); }
namespace input { template void re(complex& x); template<class T1, class T2> void re(pair<T1,T2>& p); template void re(vector& a); template<class T, size_t SZ> void re(array<T,SZ>& a);
template<class T> void re(T& x) { cin >> x; }
void re(double& x) { string t; re(t); x = stod(t); }
void re(ld& x) { string t; re(t); x = stold(t); }
template<class T, class... Ts> void re(T& t, Ts&... ts) {
re(t); re(ts...);
}
template<class T> void re(complex<T>& x) { T a,b; re(a,b); x = {a,b}; }
template<class T1, class T2> void re(pair<T1,T2>& p) { re(p.f,p.s); }
template<class T> void re(vector<T>& a) { F0R(i,sz(a)) re(a[i]); }
template<class T, size_t SZ> void re(array<T,SZ>& a) { F0R(i,SZ) re(a[i]); }
}
using namespace input;
namespace output { void pr(int x) { cout << x; } void pr(long x) { cout << x; } void pr(ll x) { cout << x; } void pr(unsigned x) { cout << x; } void pr(unsigned long x) { cout << x; } void pr(unsigned long long x) { cout << x; } void pr(float x) { cout << x; } void pr(double x) { cout << x; } void pr(ld x) { cout << x; } void pr(char x) { cout << x; } void pr(const char* x) { cout << x; } void pr(const string& x) { cout << x; } void pr(bool x) { pr(x ? "true" : "false"); } template void pr(const complex& x) { cout << x; }
template<class T1, class T2> void pr(const pair<T1,T2>& x);
template<class T> void pr(const T& x);
template<class T, class... Ts> void pr(const T& t, const Ts&... ts) {
pr(t); pr(ts...);
}
template<class T1, class T2> void pr(const pair<T1,T2>& x) {
pr("{",x.f,", ",x.s,"}");
}
template<class T> void pr(const T& x) {
pr("{"); // const iterator needed for vector<bool>
bool fst = 1; for (const auto& a: x) pr(!fst?", ":"",a), fst = 0;
pr("}");
}
void ps() { pr("\n"); } // print w/ spaces
template<class T, class... Ts> void ps(const T& t, const Ts&... ts) {
pr(t); if (sizeof...(ts)) pr(" "); ps(ts...);
}
void pc() { pr("]\n"); } // debug w/ commas
template<class T, class... Ts> void pc(const T& t[user:tourist], const Ts&... ts) {
pr(t); if (sizeof...(ts)) pr(", "); pc(ts...);
}
#define dbg(x...) pr("[",#x,"] = ["), pc(x);
}
using namespace output;
namespace io { void setIn(string s) { freopen(s.c_str(),"r",stdin); } void setOut(string s) { freopen(s.c_str(),"w",stdout); } void setIO(string s = "") { ios_base::sync_with_stdio(0); cin.tie(0); // fast I/O // cin.exceptions(cin.failbit); // throws exception when do smth illegal // ex. try to read letter into int if (sz(s)) { setIn(s+".in"), setOut(s+".out"); } // for USACO } }
using namespace io;
//end ********************
actually there are not only defines but there are some functions too.
and for example tourist is in the second part that uses things originally.
now in the comments tell me which one is easier to use and better for using in contests ?
which one are you familiar with ?
actually I prefer to be in the second type of users. as i think it will get complicated to be in the first type ...
You should implement and use whatever you are comfortable with. tourist uses his version because he's comfortable with as is Benq for using his version. What matters is how you are able to solve actual coding problems in the end (with the help of neat debugging tricks, if needed).