cfmaster's blog

By cfmaster, history, 4 years ago, In English

Hello every body reading this blog!

till now, Iv seen two types of users in codeforces :

  1. 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)
  2. 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 ...

  • Vote: I like it
  • -32
  • Vote: I do not like it

»
4 years ago, # |
  Vote: I like it +10 Vote: I do not like it

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).