Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define fileName string ("")
- //#define TEST_GENERATOR
- #define INP (fileName + ".inp").c_str ()
- #define OUT (fileName + ".out").c_str ()
- #define ERR (fileName + ".err").c_str ()
- /* ---------------------------------------------------------------------------------------- */
- #include <algorithm>
- #include <iostream>
- #include <sstream>
- #include <cstdlib>
- #include <climits>
- #include <cstring>
- #include <iomanip>
- #include <limits>
- #include <locale>
- #include <cstdio>
- #include <vector>
- #include <cmath>
- #include <stack>
- #include <queue>
- #include <deque>
- #include <ctime>
- #include <map>
- #include <set>
- using namespace std;
- #define fi first
- #define se second
- #define mp make_pair
- #define pb push_back
- #define rp(i, n) for (int i = 0; i < (n); ++i)
- #define rd(i, n) for (int i = (n); i--;)
- #define rs(i, x) rp (i, sz (x))
- #define fr(i, a, b) for (int i = (a); i <= (b); ++i)
- #define fd(i, a, b) for (int i = (a); i >= (b); --i)
- #define fe(i, x) for (__typeof ((x).begin ()) i = (x).begin (); i != (x).end (); ++i)
- #define fer(i, x) for (__typeof ((x).rbegin ()) i = (x).rbegin (); i != (x).rend (); ++i)
- #define cd(x) while ((x)--)
- #define nt(n) for (int i = (n); i--;)
- #define srt(v) sort (all (v))
- #define mn(x, y) x = min (x, y)
- #define mx(x, y) x = max (x, y)
- #define sz(x) (int) (x).size ()
- #define all(x) (x).begin (), (x).end ()
- #define cl(x) memset (x, 0, sizeof (x))
- #define sqr(x) ((x) * (x))
- const double pi = acos(-1.0);
- typedef unsigned long long llu;
- typedef long long ll;
- typedef pair <int, int> ii;
- typedef vector <string> vs;
- typedef vector <ii> vii;
- typedef vector <int> vi;
- typedef vector <vi> vvi;
- typedef vector <vii> vvii;
- typedef vector <bool> vb;
- typedef vector <vb> vvb;
- template <class T>
- inline string ns (const T &number)
- {
- stringstream ss;
- ss << number;
- return ss.str ();
- }
- template <class T>
- inline T sn (const string &text)
- {
- stringstream ss (text);
- T result;
- return ss >> result ? result : 0;
- }
- template <class T>
- inline T pow2 (const int &x)
- {
- return (T) 1 << x;
- }
- template <class T>
- inline int log2 (T x)
- {
- int res = 0;
- while (x >>= 1) ++res;
- return res;
- }
- struct disjoint_set
- {
- vi pset;
- int _sz;
- inline int size () {return _sz;}
- inline void init (const int &n)
- {
- pset.resize (n);
- rp (i, n) pset [i] = i;
- _sz = n;
- }
- disjoint_set () {};
- disjoint_set (const int &n) {init (n);}
- int find (const int &x) {return (x == pset [x] ? x : pset [x] = find (pset [x]));}
- inline bool same (const int &x, const int &y) {return (find (x) == find (y));}
- inline bool join (const int &x, const int &y)
- {
- int xx = find (x), yy = find (y);
- if (xx == yy) return false;
- --_sz; pset [xx] = yy; return true;
- }
- };
- template <class T>
- inline T rand ()
- {
- int cnt = sizeof (T) * 8 / 15 + 1;
- T res = 0;
- cd (cnt) res = (res << 15) + rand ();
- return res;
- }
- template <class T>
- inline T rand (T x, T y)
- {
- if (x > y) swap (x, y);
- T diff = y - x + 1, tmp = rand <T> () % diff;
- if (tmp >= 0) return tmp + x;
- return tmp + diff + x;
- }
- /* ---------------------------------------------------------------------------------------- */
- int main ()
- {
- srand (time (NULL));
- #ifndef ONLINE_JUDGE
- #ifdef TEST_GENERATOR
- freopen (INP, "w", stdout);
- #else
- freopen (INP, "r", stdin);
- freopen (OUT, "w", stdout);
- //freopen (ERR, "w", stderr);
- #endif
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment