リブlab

理系大学生のIT・電気・大学・趣味についての日記

リブの競プロテンプレート(随時更新)説明あり

コメント付きです。そのうちコメントじゃなくて見やすい解説を作ろうかな。

#include <bits/stdc++.h>
using namespace std;   //開発で使うべからず

/* REPmacro */
//一個下は#define rep(i,n) for(int i=0;i<n;i++)の改良版
#define REP(i,n) for(int i=0,i##_len=(n);i<i##_len;++i)
#define REPR(i,n) for(int i=((int)(n)-1);i>=0;--i)
#define FOR(i,m,n) for(int i=(int)(m);i<(int)(n);++i)
/*
上の説明
   REP(i,10){...} //i=0~i=9までのループ
   FOR(i,3,10){...} //i=3~i=9までのループ
   REPR(i,10){...} //i=9~i=0までのループ
*/

/*alias*/
/*ALLはコンテナaが2回別々に評価される。 たとえばsort(ALL(field[y++]))のようなことをするとバグになるらしい。なので、気を付けて使うつもり。*/
#define ALL(x) (x).begin(),(x).end()
//size()のunsignedをintへ
#define SZ(x) ((int)(x).size())
#define F first
#define S second
#define PB push_back
#define EB emplace_back
#define MP make_pair
//#define cauto const auto
//#define caa const auto&   const auto ampersand

//y0は標準ライブラリ関数らしい。ので、事故防止
#define y0 y3487465
#define y1 y8687969
#define j0 j1347829
#define j1 j234892
#define next asdnext
#define prev asdprev
#define itn int

/*using*/
//using lnt = long long;  l(小文字のエル)
//using unsi = unsigned;  アンジーで覚えてる

using ll = long long;   //(小文字のエル)
using ull = unsigned long long;
using unsi = unsigned;
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using pii = pair<int, int>;
//doubleは1e+15~1e-15ぐらい.floatは1e+6~1e-6ぐらいの精度
using db = double;
using plex = complex<D>;
using vs = vector<string>;
/*した二つはエラーになるので使うならdefine*/
//using cauto = const auto;
//using caa = const auto&;

/*template*/
//標準のmaxは比べるだけだけどこれは代入(assign)してくれる
template<class T>inline bool amax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>inline bool amin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }

/* func */

/*struct*/
struct aaa{
    aaa(){
        cin.tie(0); ios::sync_with_stdio(0); cout<<fixed<<setprecision(20);
    };
}aaaaaaa;

//上の簡易版struct Fast {Fast(){std::cin.tie(0);ios::sync_with_stdio(false);}} fast;

/* const */
//const int INF = 1001001001;
//const ll LINF = 1001001001001001001ll;
//const int MOD = 1e9 + 7; //10^9
//const db EPS = 1e-9;
//上のやつらをconst autoにするのか問題
//加えてconstexprにするのか問題
const int dx[] = { 1, 1, 0, -1, -1, -1, 0, 1 }, dy[] = { 0, 1, 1, 1, 0, -1, -1, -1 };  //Counterclockwise from the 6o'clock direction
//Take the x-axis downward and the y-axis right x軸を下、y軸を右

//#define int ll
//#define int long long
//これらはコメントアウトを消すことでsignedの力が解放する

signed main()
{
/*
構造体aaaでmainの冒頭で書く処理を書いてmainをすっきりさせる。
   cin.tie(0);
   ios::sync_with_stdio(false);
(cin,cout)か(printf,scanf)の組のどちらかに使用を限定
*/




  return 0;
}

/*
memo

・打ち間違いでもセーフというやつ。
#define itn int

・sign main()を見かけたけど使い道がよく分からん。
と思ってたけど long long を int にdefineする宗派がmain()を使うとエラーになるかららしい。
*/