Codeforces上位50名のテンプレート、C++のみ、敬称略、まとめはこちら。
tourist
#include <bits/stdc++.h> using namespace std;
- テンプレートなし
TooSimple
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <map> #include <set> #include <cassert> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector<int> VI; typedef long long ll; typedef pair<int,int> PII; const ll mod=1000000007; ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} // head
- rep, それを逆順にしたper
- all
- push_back, make_pair -> pb, mp
- first, second -> fi, se
- powmodがテンプレートにある
- vector, long long, pairをtypedef
rng_58
#include <iostream> #include <sstream> #include <fstream> #include <string> #include <vector> #include <deque> #include <queue> #include <stack> #include <set> #include <map> #include <algorithm> #include <functional> #include <utility> #include <bitset> #include <cmath> #include <cstdlib> #include <ctime> #include <cstdio> using namespace std; #define REP(i,n) for((i)=0;(i)<(int)(n);(i)++) #define snuke(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
- REP
- snuke
subscriber
#include<stdio.h> #include<iostream> #include<vector> #include<cmath> #include<algorithm> #include<memory.h> #include<map> #include<set> #include<queue> #include<list> #include<sstream> #include<cstring> #define mp make_pair #define pb push_back #define F first #define S second #define SS stringstream #define sqr(x) ((x)*(x)) #define m0(x) memset(x,0,sizeof(x)) #define m1(x) memset(x,63,sizeof(x)) #define CC(x) cout << (x) << endl #define pw(x) (1ll<<(x)) #define buli(x) __builtin_popcountll(x) #define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
- first, second -> F, S
- memset0埋めマクロ
- forn: いわゆるrepマクロ
- CC(x) で出力, デバッグ用?
Petr
#include <vector> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; typedef long long ll;
- long long -> ll
vepifanov
#include <cstdio> #include <numeric> #include <iostream> #include <vector> #include <set> #include <cstring> #include <string> #include <map> #include <cmath> #include <ctime> #include <algorithm> #include <bitset> #include <queue> #include <sstream> #include <deque> #include <cassert> using namespace std; #define mp make_pair #define pb push_back #define rep(i,n) for(int i = 0; i < (n); i++) #define re return #define fi first #define se second #define sz(x) ((int) (x).size()) #define all(x) (x).begin(), (x).end() #define sqr(x) ((x) * (x)) #define sqrt(x) sqrt(abs(x)) #define y0 y3487465 #define y1 y8687969 #define fill(x,y) memset(x,y,sizeof(x)) #define prev PREV #define j0 j1347829 #define j1 j234892 typedef vector<int> vi; typedef long long ll; typedef long double ld; typedef double D; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<string> vs; typedef vector<vi> vvi; template<class T> T abs(T x) { re x > 0 ? x : -x; }
- return -> re 普通にコード内でも使われている
- size()がunsignedなのをマクロ内でキャスト
- sqrt(x) 引数を0以上に
- y0, y1, j0, j1,prevを標準ライブラリ関数名などと被せないように
- 各種typedef
Um_nik
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <set> using namespace std; typedef long long ll; typedef pair<ll, int> pli; #define mp make_pair
- typedef
- make_pair -> mp
Endagorion
#include <iostream> #include <tuple> #include <sstream> #include <vector> #include <cmath> #include <ctime> #include <cassert> #include <cstdio> #include <queue> #include <set> #include <map> #include <fstream> #include <cstdlib> #include <string> #include <cstring> #include <algorithm> #include <numeric> #define mp make_pair #define mt make_tuple #define fi first #define se second #define pb push_back #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define forn(i, n) for (int i = 0; i < (int)(n); ++i) #define for1(i, n) for (int i = 1; i <= (int)(n); ++i) #define ford(i, n) for (int i = (int)(n) - 1; i >= 0; --i) #define fore(i, a, b) for (int i = (int)(a); i <= (int)(b); ++i) using namespace std; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<pii> vpi; typedef vector<vi> vvi; typedef long long i64; typedef vector<i64> vi64; typedef vector<vi64> vvi64; typedef pair<i64, i64> pi64; typedef double ld; template<class T> bool uin(T &a, T b) { return a > b ? (a = b, true) : false; } template<class T> bool uax(T &a, T b) { return a < b ? (a = b, true) : false; }
- forn, for1, ford, fore ループのマクロ fornとfordが順番逆、for1は右端含む、foreは区間
- uin, umax -> updateminの略?更新が起きた時に限りtrue
- all, rall
- 各種typedef
WJMZBMR
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <vector> using namespace std; const int MOD = int(1e9) + 7; typedef long long int64;
- MOD
- long long -> int64
mnbvmar
#include <bits/stdc++.h> using namespace std; typedef long long LL; template<typename TH> void debug_vars(const char* data, TH head){ cerr << data << "=" << head << "\n"; } template<typename TH, typename... TA> void debug_vars(const char* data, TH head, TA... tail){ while(*data != ',') cerr << *data++; cerr << "=" << head << ","; debug_vars(data+1, tail...); } #ifdef LOCAL #define debug(...) debug_vars(#__VA_ARGS__, __VA_ARGS__) #else #define debug(...) (__VA_ARGS__) #endif #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((int)(x).begin())
- デバッグ用のマクロが可変長引数
- size()がunsignedなのでintにキャスト
scott_wu
#include <iostream> #include <algorithm> #include <cstdio> #include <vector> #include <string> #include <queue> using namespace std; typedef long long ll;
- ほぼなし
Egor
#include<cstdio> #include<cmath> #include<iostream> using namespace std;
- ほぼなし
Merkurev
#include <iostream> #include <vector> #include <cstdio> #include <algorithm> #include <set> #include <map> #include <cassert> #include <numeric> #include <string> #include <cstring> #include <cmath> using namespace std; #ifdef LOCAL #define eprintf(...) fprintf(stderr, __VA_ARGS__) #else #define eprintf(...) 42 #endif typedef long long int int64;
- デバッグ出力
qwerty787788
#include <bits/stdc++.h> using namespace std;
- なし
ecnerwal
#include<bits/stdc++.h> using namespace std; typedef double ld;
- double -> ld
niyaznigmatul
#include <cstdio>
- なし
yeputons
#include <iostream> #include <cstring> using namespace std;
- なし
PavelKunyavskiy
//#include <iostream> #include <fstream> #include <vector> #include <set> #include <map> #include <cstring> #include <string> #include <cmath> #include <cassert> #include <ctime> #include <algorithm> #include <sstream> #include <list> #include <queue> #include <deque> #include <stack> #include <cstdlib> #include <cstdio> #include <iterator> #include <functional> #include <bitset> #define mp make_pair #define pb push_back #ifdef LOCAL #define eprintf(...) fprintf(stderr,__VA_ARGS__) #else #define eprintf(...) #endif #define TIMESTAMP(x) eprintf("["#x"] Time : %.3lf s.\n", clock()*1.0/CLOCKS_PER_SEC) #define TIMESTAMPf(x,...) eprintf("[" x "] Time : %.3lf s.\n", __VA_ARGS__, clock()*1.0/CLOCKS_PER_SEC) #if ( ( _WIN32 || __WIN32__ ) && __cplusplus < 201103L) #define LLD "%I64d" #else #define LLD "%lld" #endif using namespace std; #define TASKNAME "E" #ifdef LOCAL static struct __timestamper { string what; __timestamper(const char* what) : what(what){}; __timestamper(const string& what) : what(what){}; ~__timestamper(){ TIMESTAMPf("%s", what.data()); } } __TIMESTAMPER("end"); #else struct __timestamper {}; #endif typedef long long ll; typedef long double ld;
- aa
al13n
#define _CRT_SECURE_NO_DEPRECATE #define _USE_MATH_DEFINES #include <array> #include <iostream> #include <fstream> #include <cstdio> #include <cstdlib> #include <cassert> #include <climits> #include <ctime> #include <numeric> #include <vector> #include <algorithm> #include <bitset> #include <cmath> #include <cstring> #include <iomanip> #include <complex> #include <deque> #include <functional> #include <list> #include <map> #include <string> #include <sstream> #include <set> #include <unordered_set> #include <unordered_map> #include <stack> #include <queue> using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef unsigned int uint; typedef unsigned char uchar; typedef double ld; typedef pair<int, int> pii; typedef pair<short, short> pss; typedef pair<LL, LL> pll; typedef pair<ULL, ULL> puu; typedef pair<ld, ld> pdd; template<class T> inline T sqr(T x) { return x * x; } template<class T> inline string tostr(const T & x) { stringstream ss; ss << x; return ss.str(); } inline LL parse(const string & s) { stringstream ss(s); LL x; ss >> x; return x; } #define left asdleft #define right asdright #define link asdlink #define unlink asdunlink #define next asdnext #define prev asdprev #define y0 asdy0 #define y1 asdy1 #define mp make_pair #define MT make_tuple #define pb push_back #define sz(x) ((int)(x).size()) #define all(x) (x).begin(), (x).end() #define clr(ar,val) memset(ar, val, sizeof(ar)) #define istr stringstream #define forn(i,n) for(int i=0;i<(n);++i) #define forv(i,v) forn(i,sz(v)) #define X first #define Y second const ld EPS = 1e-12; const int INF = 1000*1000*1000; const LL LINF = INF * 1ll * INF; const ld DINF = 1e200; const ld PI = 3.1415926535897932384626433832795l; int gcd(int a,int b){return a?gcd(b%a,a):b;} LL gcd(LL a,LL b){return a?gcd(b%a,a):b;} LL powmod(LL a,LL p,LL m){LL r=1;while(p){if(p&1)r=r*a%m;p>>=1;a=a*a%m;}return r;} bool isprime(LL a){if(a<=1)return false;for (LL i=2;i*i<=a;++i){if(a%i==0)return false;}return true;} LL sqrtup(LL a){if(!a)return 0;LL x=max(0ll,(LL)sqrt((ld)a));while(x*x>=a)--x;while((x+1)*(x+1)<a)++x;return x+1;} LL sqrtdown(LL a){LL x=max(0ll,(LL)sqrt((ld)a));while(x*x>a)--x;while((x+1)*(x+1)<=a)++x;return x;} template<class T> ostream& operator<<(ostream &s, const vector<T> &v); template<class A,class B> ostream& operator<<(ostream &s, const pair<A,B> &p); template<class K,class V> ostream& operator<<(ostream &s, const map<K,V> &m); template<class T,size_t N> ostream& operator<<(ostream &s, const array<T,N> &a); template<class T> ostream& operator<<(ostream &s, const vector<T> &v){s<<'[';forv(i,v){if(i)s<<',';s<<v[i];}s<<']';return s;} template<class A,class B> ostream& operator<<(ostream &s, const pair<A,B> &p){s<<"("<<p.X<<","<<p.Y<<")";return s;} template<class K,class V> ostream& operator<<(ostream &s, const map<K,V> &m){s<<"{";bool f=false;for(const auto &it:m){if(f)s<<",";f=true;s<<it.X<<": "<<it.Y;}s<<"}";return s;} template<class T,size_t N> ostream& operator<<(ostream &s, const array<T,N> &a){s<<'[';forv(i,a){if(i)s<<',';s<<a[i];}s<<']';return s;} template<size_t n,class... T> struct put1 { static ostream& put(ostream &s, const tuple<T...> &t){s<<get<sizeof...(T)-n>(t);if(n>1)s<<',';return put1<n-1,T...>::put(s,t);} }; template<class... T> struct put1<0,T...> { static ostream& put(ostream &s, const tuple<T...> &t){return s;} }; template<class... T> ostream& operator<<(ostream &s, const tuple<T...> &t){s<<"(";put1<sizeof...(T),T...>::put(s,t);s<<")";return s;} ostream& put2(ostream &s, const tuple<> &t){return s;} template<class U> ostream& put2(ostream &s, const tuple<U> &t){return s<<get<0>(t);} template<class U,class V,class... T> ostream& put2(ostream &s, const tuple<U,V,T...> &t){return s<<t;} #ifdef __ASD__ #define dbg(...) do { cerr << #__VA_ARGS__ << " = "; put2(cerr, make_tuple(__VA_ARGS__)); cerr << endl; }while(false) #else #define dbg(...) do{}while(false) #endif
- 一番上はscanf等の警告抑制?GNU g++で効果あるかは不明
- 二番目はM_PI使う用
izrak
#include <bits/stdc++.h> #define FO(i,a,b) for (int i = (a); i < (b); i++) #define sz(v) int(v.size()) using namespace std;
- FO: ループ
- size()をintにキャスト
jcvb
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cstdlib> #include<cmath> #include<vector> #include<map> #include<set> #include<queue> #include<bitset> using namespace std; typedef long long ll; typedef double db; const db pi=acos(-1); void gn(int &x){ int sg=1;char c;while(((c=getchar())<'0'||c>'9')&&c!='-'); if(c=='-')sg=-1,x=0;else x=c-'0'; while((c=getchar())>='0'&&c<='9')x=x*10+c-'0'; x*=sg; } void gn(ll &x){ int sg=1;char c;while(((c=getchar())<'0'||c>'9')&&c!='-'); if(c=='-')sg=-1,x=0;else x=c-'0'; while((c=getchar())>='0'&&c<='9')x=x*10+c-'0'; x*=sg; } const int mo=1000000007; const int inf=1061109567; //const ll inf=1000000000000000000ll; int qp(int a,ll b){int ans=1;do{if(b&1)ans=1ll*ans*a%mo;a=1ll*a*a%mo;}while(b>>=1);return ans;} int qp(int a,ll b,int mo){int ans=1;do{if(b&1)ans=1ll*ans*a%mo;a=1ll*a*a%mo;}while(b>>=1);return ans;} int gcd(int a,int b){return b?gcd(b,a%b):a;} int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; #define x1 x192837465 #define x2 x123456789 #define y1 y192837465 #define y2 y123456789 using namespace std;
- 自前の入力関数
- qp: 累乗の高速計算、MODありなしどっちも
- gcd
- dx, dy
- x1, y1が被らないように
dreamoon
#include <bits/stdc++.h> #define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define REP(I, N) for (int I = 0; I < (N); ++I) #define REPP(I, A, B) for (int I = (A); I < (B); ++I) #define RI(X) scanf("%d", &(X)) #define RII(X, Y) scanf("%d%d", &(X), &(Y)) #define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z)) #define DRI(X) int (X); scanf("%d", &X) #define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y) #define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z) #define RS(X) scanf("%s", (X)) #define CASET int ___T, case_n = 1; scanf("%d ", &___T); while (___T-- > 0) #define MP make_pair #define PB push_back #define MS0(X) memset((X), 0, sizeof((X))) #define MS1(X) memset((X), -1, sizeof((X))) #define LEN(X) strlen(X) #define PII pair<int,int> #define VI vector<int> #define VPII vector<pair<int,int> > #define PLL pair<long long,long long> #define VPLL vector<pair<long long,long long> > #define F first #define S second typedef long long LL; using namespace std;
- size()をintにキャスト
- all
- rep, repp
- 入力がマクロ
- 変数宣言して入力するマクロ
Kostroma
#pragma comment (linker, "/STACK:1280000000") #define _CRT_SECURE_NO_WARNINGS //#include "testlib.h" #include <cstdio> #include <cassert> #include <algorithm> #include <iostream> #include <memory.h> #include <string> #include <vector> #include <set> #include <map> #include <cmath> #include <bitset> #include <deque> #include <unordered_map> #include <unordered_set> #include <ctime> #include <stack> #include <queue> #include <fstream> #include <sstream> #include <complex> using namespace std; //#define FILENAME "" #define mp make_pair #define all(a) a.begin(), a.end() typedef long long li; typedef long double ld; void solve(); void precalc(); clock_t start; //int timer = 1; int testNumber = 1; bool todo = true; int main() { #ifdef room111 freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #else //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); //freopen(FILENAME".in", "r", stdin); //freopen(FILENAME ".out", "w", stdout); #endif start = clock(); int t = 1; cout.sync_with_stdio(0); cin.tie(0); precalc(); cout.precision(10); cout << fixed; //cin >> t; int testNum = 1; while (t--) { //cout << "Case #" << testNum++ << ": "; solve(); ++testNumber; //++timer; } #ifdef room111 cerr << "\n\n" << (clock() - start) / 1.0 / CLOCKS_PER_SEC << "\n\n"; #endif return 0; } //BE CAREFUL: IS INT REALLY INT? //#define int li /*int pr[] = { 97, 2011 }; int mods[] = { 1000000007, 1000000009 }; const int C = 300500; int powers[2][C];*/ //int MOD = 1000000007; //int c[5010][5010]; //int catalan[200500]; //ld doubleC[100][100]; template<typename T> T binpow(T q, T w, T mod) { if (!w) return 1 % mod; if (w & 1) return q * 1LL * binpow(q, w - 1, mod) % mod; return binpow(q * 1LL * q % mod, w / 2, mod); } /*int curMod = 1000000009; int fact[100500], revfact[100500]; int getC(int n, int k) { int res = fact[n] * revfact[n - k] % curMod * revfact[k] % curMod; return res; }*/ //const int C = 500500; //int least_prime[C]; void precalc() { /*for (int i = 2; i < C; ++i) { if (!least_prime[i]) { least_prime[i] = i; for (li j = i * 1LL * i; j < C; j += i) { least_prime[j] = i; } } }*/ /*fact[0] = revfact[0] = 1; for (int i = 1; i < 100500; ++i) { fact[i] = fact[i - 1] * i % curMod; revfact[i] = binpow(fact[i], curMod - 2, curMod); }*/ /*for (int w = 0; w < 2; ++w) { powers[w][0] = 1; for (int j = 1; j < C; ++j) { powers[w][j] = (powers[w][j - 1] * 1LL * pr[w]) % mods[w]; } }*/ /*catalan[0] = 1; for (int n = 0; n < 200500 - 1; ++n) { catalan[n + 1] = catalan[n] * 2 * (2 * n + 1) % MOD * binpow(n + 2, MOD - 2, MOD) % MOD; }*/ /*for (int i = 0; i < 5010; ++i) { c[i][i] = c[i][0] = 1; for (int j = 1; j < i; ++j) { c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % MOD; } }*/ /*for (int i = 0; i < 100; ++i) { doubleC[i][i] = doubleC[i][0] = 1.0; for (int j = 1; j < i; ++j) { doubleC[i][j] = doubleC[i - 1][j - 1] + doubleC[i - 1][j]; } }*/ } template<typename T> T gcd(T q, T w) { while (w) { q %= w; swap(q, w); } return q; } template<typename T> T lcm(T q, T w) { return q / gcd(q, w) * w; } //#define int li //const int mod = 1000000007; typedef double ldd; #define double ld
- 一番上の行はスタックを拡張するおまじないだが、MSVC++でしか意味が無い
- 二行目はこれまたMSVC++にしか関係なくて、scanf等のバッファオーバーランが発生する可能性のある関数を使った時の警告を抑制するらしい
- precalcの中に素数篩、階乗とあるmodでのその逆元、カタラン数、二項係数などがあり、コメントアウトすることで使えるようになってる
- gcd, lcm
Marcin_smu
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> PII; typedef long long LL; typedef double D; #define FI first #define SE second #define MP make_pair #define PB push_back #define R(I,N) for(int I=0;I<N;I++) #define F(I,A,B) for(int I=A;I<B;I++) #define FD(I,N) for(int I=N-1;I>=0;I--) #define make(A) scanf("%d",&A) #define make2(A,B) scanf("%d%d",&A,&B) #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((int)(x).size()) template<typename C> void maxi(C& a,C b){if(a<b)a=b;} template<typename C> void mini(C& a,C b){if(a>b)a=b;} template<class TH> void _dbg(const char *sdbg, TH h){cerr<<sdbg<<"="<<h<<"\n";} template<class TH, class... TA> void _dbg(const char *sdbg, TH h, TA... a){ while(*sdbg!=',')cerr<<*sdbg++;cerr<<"="<<h<<","; _dbg(sdbg+1, a...); } #ifdef LOCAL #define debug(...) _dbg(#__VA_ARGS__, __VA_ARGS__) #define debugv(C) {for(auto&c:C)cerr<<c<<",";cerr<<endl;} #else #define debug(...) (__VA_ARGS__) #define debugv(C) {} #define cerr if(0)cout #endif
- R, F, FDがループマクロ
- デバッグ用関数
overtroll
#include <iostream> #include <stdio.h> #include <vector> #include <algorithm> #include <set> #include <map> #include <cmath> #include <string> #include <cstring> #include <ctime> #include <cassert> #include <queue> #include <stack> #include <bitset> #define fs first #define sc second #define mp make_pair #define pb push_back #define mt make_tuple #define NAME "" using namespace std; typedef long long ll; typedef long double ld; const ld PI = acos(-1.0);
- first, second -> fs, sc
- make_tuple -> mt
RAD
#define _CRT_SECURE_NO_DEPRECATE #define _SECURE_SCL 0 #include <algorithm> #include <cmath> #include <cstdio> #include <cstdlib> #include <ctime> #include <map> #include <set> #include <string> #include <utility> #include <vector> #include <iostream> #include <queue> #include <deque> #include <stack> #include <list> #include <cctype> #include <sstream> #include <cassert> #include <bitset> #include <memory.h> #include <complex> #include <iomanip> using namespace std; #pragma comment(linker, "/STACK:200000000") typedef long long int64; #define forn(i, n) for(int i = 0; i < (int)(n); i++) #define ford(i, n) for(int i = (int)(n) - 1; i >= 0; i--) #define fore(i, a, n) for(int i = (int)(a); i < (int)(n); i++) #define pb push_back #define mp make_pair #define fs first #define sc second #define last(a) (int(a.size()) - 1) #define all(a) a.begin(), a.end() const double EPS = 1E-9; const int INF = 1000000000; const int64 INF64 = (int64) 1E18; const double PI = 3.1415926535897932384626433832795; const int CMAX = 1100000; const int64 MOD = INF + 7;
- 一番上はscanf等の警告抑制?GNU g++で効果あるかは不明
- last: 最後のインデックス
TankEngineer
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std;
- なし
Swistakk
#include <bits/stdc++.h> #define MP make_pair #define PB push_back #define st first #define nd second #define rd third #define FOR(i, a, b) for(int i =(a); i <=(b); ++i) #define RE(i, n) FOR(i, 1, n) #define FORD(i, a, b) for(int i = (a); i >= (b); --i) #define REP(i, n) for(int i = 0;i <(n); ++i) #define VAR(v, i) __typeof(i) v=(i) #define FORE(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i) #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((int)(x).size()) using namespace std; template<typename TH> void _dbg(const char* sdbg, TH h) { cerr<<sdbg<<"="<<h<<"\n"; } template<typename TH, typename... TA> void _dbg(const char* sdbg, TH h, TA... t) { while(*sdbg != ',')cerr<<*sdbg++; cerr<<"="<<h<<","; _dbg(sdbg+1, t...); } #ifdef LOCAL #define debug(...) _dbg(#__VA_ARGS__, __VA_ARGS__) #define debugv(x) {{cerr <<#x <<" = "; FORE(itt, (x)) cerr <<*itt <<", "; cerr <<"\n"; }} #else #define debug(...) (__VA_ARGS__) #define debugv(x) #define cerr if(0)cout #endif #define make(type, x) type x; cin>>x; #define make2(type, x, y) type x, y; cin>>x>>y; #define make3(type, x, y, z) type x, y, z; cin>>x>>y>>z; #define make4(type, x, y, z, t) type x, y, z, t; cin>>x>>y>>z>>t; #define next ____next #define prev ____prev #define left ____left #define hash ____hash typedef long long ll; typedef long double LD; typedef pair<int, int> PII; typedef pair<ll, ll> PLL; typedef vector<int> VI; typedef vector<VI> VVI; typedef vector<ll> VLL; typedef vector<pair<int, int> > VPII; typedef vector<pair<ll, ll> > VPLL; template<class C> void mini(C&a4, C b4){a4=min(a4, b4); } template<class C> void maxi(C&a4, C b4){a4=max(a4, b4); } template<class T1, class T2> ostream& operator<< (ostream &out, pair<T1, T2> pair) { return out << "(" << pair.first << ", " << pair.second << ")";} template<class A, class B, class C> struct Triple { A first; B second; C third; bool operator<(const Triple& t) const { if (st != t.st) return st < t.st; if (nd != t.nd) return nd < t.nd; return rd < t.rd; } }; template<class T> void ResizeVec(T&, vector<int>) {} template<class T> void ResizeVec(vector<T>& vec, vector<int> sz) { vec.resize(sz[0]); sz.erase(sz.begin()); if (sz.empty()) { return; } for (T& v : vec) { ResizeVec(v, sz); } } typedef Triple<int, int, int> TIII; template<class A, class B, class C> ostream& operator<< (ostream &out, Triple<A, B, C> t) { return out << "(" << t.st << ", " << t.nd << ", " << t.rd << ")"; } template<class T> ostream& operator<<(ostream& out, vector<T> vec) { out<<"("; for (auto& v: vec) out<<v<<", "; return out<<")"; } typedef pair<int, bool> PIB;
- next, prev, left, hash
anta
#include <string> #include <vector> #include <algorithm> #include <numeric> #include <set> #include <map> #include <queue> #include <iostream> #include <sstream> #include <cstdio> #include <cmath> #include <ctime> #include <cstring> #include <cctype> #include <cassert> #include <limits> #include <functional> #define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i)) #define rer(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i)) #define reu(i,l,u) for(int (i)=(int)(l);(i)<(int)(u);++(i)) #if defined(_MSC_VER) || __cplusplus > 199711L #define aut(r,v) auto r = (v) #else #define aut(r,v) __typeof(v) r = (v) #endif #define each(it,o) for(aut(it, (o).begin()); it != (o).end(); ++ it) #define all(o) (o).begin(), (o).end() #define pb(x) push_back(x) #define mp(x,y) make_pair((x),(y)) #define mset(m,v) memset(m,v,sizeof(m)) #define INF 0x3f3f3f3f #define INFL 0x3f3f3f3f3f3f3f3fLL using namespace std; typedef vector<int> vi; typedef pair<int,int> pii; typedef vector<pair<int,int> > vpii; typedef long long ll; template<typename T, typename U> inline void amin(T &x, U y) { if(y < x) x = y; } template<typename T, typename U> inline void amax(T &x, U y) { if(x < y) x = y; }
- aut
- amin, amax
- rep, rer, reu
sdya
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <cstring> #include <string> #include <queue> #include <set> #include <map> #include <bitset> #include <cmath> #include <stack> #include <ctime> #include <unordered_map> #include <unordered_set> #pragma comment (linker, "/STACK:256000000") using namespace std;
- 下から二番目はスタックを拡張するおまじないだが、MSVC++でしか意味が無い
bmerry
#include <bits/stdc++.h> /*** TEMPLATE CODE STARTS HERE ***/ using namespace std; typedef vector<int> vi; typedef vector<string> vs; typedef long long ll; typedef complex<double> pnt; typedef pair<int, int> pii; #define RA(x) begin(x), end(x) #define FE(i, x) for (auto i = begin(x); i != end(x); ++i) #define SZ(x) ((int) (x).size()) template<class T> void splitstr(const string &s, vector<T> &out) { istringstream in(s); out.clear(); copy(istream_iterator<T>(in), istream_iterator<T>(), back_inserter(out)); } template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; } static void redirect(int argc, const char **argv) { ios::sync_with_stdio(false); if (argc > 1) { static filebuf f; f.open(argv[1], ios::in); cin.rdbuf(&f); if (!cin) { cerr << "Failed to open '" << argv[1] << "'" << endl; exit(1); } } if (argc > 2) { static filebuf f; f.open(argv[2], ios::out | ios::trunc); cout.rdbuf(&f); if (!cout) { cerr << "Failed to open '" << argv[2] << "'" << endl; } } } /*** TEMPLATE CODE ENDS HERE */
- redirect: main関数の最初に呼び出してリダイレクトする
TeaPot
#include <cstdio> #include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <string> #include <set> #include <map> #include <ctime> #include <cstring> #include <cassert> #include <bitset> #include <sstream> #include <queue> #define pb push_back #define mp make_pair #define fs first #define sc second #define sz(a) ((int) (a).size()) #define eprintf(...) fprintf(stderr, __VA_ARGS__) using namespace std; typedef long long int64; typedef long double ldb; const long double eps = 1e-9; const int inf = (1 << 30) - 1; const long long inf64 = ((long long)1 << 62) - 1; const long double pi = acos(-1); template <class T> T sqr (T x) {return x * x;} template <class T> T abs (T x) {return x < 0 ? -x : x;}
- eprintf
- sqr, abs
Shik
// {{{ by shik #include <bits/stdc++.h> #include <unistd.h> #define SZ(x) ((int)(x).size()) #define ALL(x) begin(x),end(x) #define REP(i,n) for ( int i=0; i<int(n); i++ ) #define REP1(i,a,b) for ( int i=(a); i<=int(b); i++ ) #define FOR(it,c) for ( auto it=(c).begin(); it!=(c).end(); it++ ) #define MP make_pair #define PB push_back using namespace std; typedef long long LL; typedef pair<int,int> PII; typedef vector<int> VI; #ifdef SHIK template<typename T> void _dump( const char* s, T&& head ) { cerr<<s<<"="<<head<<endl; } template<typename T, typename... Args> void _dump( const char* s, T&& head, Args&&... tail ) { int c=0; while ( *s!=',' || c!=0 ) { if ( *s=='(' || *s=='[' || *s=='{' ) c++; if ( *s==')' || *s==']' || *s=='}' ) c--; cerr<<*s++; } cerr<<"="<<head<<", "; _dump(s+1,tail...); } #define dump(...) do { \ fprintf(stderr, "%s:%d - ", __PRETTY_FUNCTION__, __LINE__); \ _dump(#__VA_ARGS__, __VA_ARGS__); \ } while (0); template<typename Iter> ostream& _out( ostream &s, Iter b, Iter e ) { s<<"["; for ( auto it=b; it!=e; it++ ) s<<(it==b?"":" ")<<*it; s<<"]"; return s; } template<typename A, typename B> ostream& operator <<( ostream &s, const pair<A,B> &p ) { return s<<"("<<p.first<<","<<p.second<<")"; } template<typename T> ostream& operator <<( ostream &s, const vector<T> &c ) { return _out(s,ALL(c)); } template<typename T, size_t N> ostream& operator <<( ostream &s, const array<T,N> &c ) { return _out(s,ALL(c)); } template<typename T> ostream& operator <<( ostream &s, const set<T> &c ) { return _out(s,ALL(c)); } template<typename A, typename B> ostream& operator <<( ostream &s, const map<A,B> &c ) { return _out(s,ALL(c)); } #else #define dump(...) #endif template<typename T> void _R( T &x ) { cin>>x; } void _R( int &x ) { scanf("%d",&x); } void _R( long long &x ) { scanf("%" PRId64,&x); } void _R( double &x ) { scanf("%lf",&x); } void _R( char &x ) { scanf(" %c",&x); } void _R( char *x ) { scanf("%s",x); } void R() {} template<typename T, typename... U> void R( T& head, U&... tail ) { _R(head); R(tail...); } template<typename T> void _W( const T &x ) { cout<<x; } void _W( const int &x ) { printf("%d",x); } template<typename T> void _W( const vector<T> &x ) { for ( auto i=x.cbegin(); i!=x.cend(); i++ ) { if ( i!=x.cbegin() ) putchar(' '); _W(*i); } } void W() {} template<typename T, typename... U> void W( const T& head, const U&... tail ) { _W(head); putchar(sizeof...(tail)?' ':'\n'); W(tail...); } // }}}
- 入出力
Golovanov399
#include <bits/stdc++.h> #define itn int #define LL long long #define pb push_back #define mp make_pair #define x first #define y second #define all(x) (x).begin(), (x).end() using namespace std; inline int nxt(){ int x; scanf("%d", &x); return x; }
- nxt
#define itn int
おもしろい
izban
#include <sstream> #include <vector> #include <algorithm> #include <cstring> #include <cstdlib> #include <iostream> #include <string> #include <cassert> #include <ctime> #include <map> #include <math.h> #include <cstdio> #include <set> #include <deque> #include <memory.h> #include <queue> #pragma comment(linker, "/STACK:64000000") typedef long long ll; using namespace std; const int MAXN = -1; const int MOD = 1; // 1000 * 1000 * 1000 + 7;
- なし
kcm1700
#include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> #include <set> #include <map> #include <climits> #include <cstdint> #include <string> #include <cstring> using namespace std;
- なし
enot.1.10
/** * author: enot.1.10, (concealed) * created: 19.12.2015 13:55:16 **/ #include <iostream> #include <cstdio> #include <cstdlib> #include <string> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <set> #include <map> #include <ctime> #include <cassert> #include <queue> #define fs first #define sc second #define F first #define S second #define pb push_back #define mp make_pair #define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i) #define forit(it,v) for(typeof((v).begin()) it = v.begin() ; it != (v).end() ; ++it) #define eprintf(...) fprintf(stderr, __VA_ARGS__),fflush(stderr) #define sz(a) ((int)(a).size()) #define all(a) (a).begin(),a.end() #define pw(x) (1LL<<(x)) using namespace std; typedef long long ll; typedef double dbl; typedef vector<int> vi; typedef pair<int, int> pi; const int inf = (int)1.01e9; const dbl eps = 1e-9; /* --- main part --- */
- 本名日時が入るようになってる
- eprintf 可変長引数のデバッグ出力用マクロ
Belonogov
#include <iostream> #include <cmath> #include <vector> #include <map> #include <set> #include <string> #include <cstring> #include <queue> #include <ctime> #include <cassert> #include <cstdio> #include <algorithm> #include <unordered_set> #include <unordered_map> #include <bitset> using namespace std; #define fr first #define sc second #define mp make_pair #define pb push_back #define epr(...) fprintf(stderr, __VA_ARGS__) #define db(x) cerr << #x << " = " << x << endl #define db2(x, y) cerr << "(" << #x << ", " << #y << ") = (" << x << ", " << y << ")\n"; #define all(a) (a).begin(), (a).end() #define equal equalll #define less lesss const int N = -1; const long long INF = 1e9 + 19; typedef unsigned long long ull;
- equal, lessが被らないように
- このデバッグ出力結構見るなぁ
-XraY-
#include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <iostream> #include <cstring> #include <vector> #include <set> #include <map> #include <cassert> #include <ctime> #include <string> #include <queue> using namespace std; #ifdef _WIN32 #define LLD "%I64d" #else #define LLD "%lld" #endif typedef long double ld; long long rdtsc() { long long tmp; asm("rdtsc" : "=A"(tmp)); return tmp; } inline int myrand() { return abs((rand() << 15) ^ rand()); } inline int rnd(int x) { return myrand() % x; } #define pb push_back #define mp make_pair #define eprintf(...) fprintf(stderr, __VA_ARGS__) #define sz(x) ((int)(x).size()) #define TASKNAME "text" const int INF = (int) 1.01e9; const ld EPS = 1e-9;
- rdtsc()はインラインアセンブラでrdtsc命令してる、時間計測用
mR.ilchi
#include <bits/stdc++.h> using namespace std;
- なし
hogloid
#include<bits/stdc++.h> #define REP(i,m) for(int i=0;i<(m);++i) #define REPN(i,m,in) for(int i=(in);i<(m);++i) #define ALL(t) (t).begin(),(t).end() #define CLR(a) memset((a),0,sizeof(a)) #define pb push_back #define mp make_pair #define fr first #define sc second using namespace std; #ifndef ONLINE_JUDGE #define dump(x) cerr << #x << " = " << (x) << endl #define prl cerr<<"called:"<< __LINE__<<endl template<class T> void debug(T a,T b){ for(;a!=b;++a) cerr<<*a<<' ';cerr<<endl;} #else #define dump(x) ; #define prl ; template<class T> void debug(T a,T b){ ;} #endif template<class T> void chmin(T& a,const T& b) { if(a>b) a=b; } template<class T> void chmax(T& a,const T& b) { if(a<b) a=b; } typedef long long int lint; typedef pair<int,int> pi; namespace std{ template<class S,class T> ostream &operator <<(ostream& out,const pair<S,T>& a){ out<<'('<<a.fr<<','<<a.sc<<')'; return out; } } lint readL(){ lint res; #ifdef ONLINE_JUDGE scanf("%I64d",&res); #else scanf("%lld",&res); #endif return res; } void printL(lint res){ #ifdef ONLINE_JUDGE printf("%I64d",res); #else printf("%lld",res); #endif }
- CFは%lldが入ってると警告が出るけど無視しても問題ないらしい(警告を二度と表示しないというチェックボックスがあるので選択)
wjh720
#include <bits/stdc++.h> #define fi first #define se second #define PA pair<int,int> #define VI vector<int> #define VP vector<PA > #define mk(x,y) make_pair(x,y) #define int64 long long #define db double #define N 300010 #define P 100000000001101ll #define wei 31 #define For(i,x,y) for (i=x;i<=y;i++) using namespace std;
- int64
RomaWhite
#include <string> #include <vector> #include <map> #include <list> #include <iterator> #include <set> #include <queue> #include <iostream> #include <sstream> #include <stack> #include <deque> #include <cmath> #include <memory.h> #include <cstdlib> #include <cstdio> #include <cctype> #include <algorithm> #include <utility> #include <cassert> #include<complex> #include <time.h> using namespace std; #define FOR(i, a, b) for(int i=(a);i<(b);i++) #define RFOR(i, b, a) for(int i=(b)-1;i>=(a);--i) #define FILL(A,value) memset(A,value,sizeof(A)) #define ALL(V) V.begin(), V.end() #define SZ(V) (int)V.size() #define PB push_back #define MP make_pair #define Pi 3.14159265358979 #define x0 ikjnrmthklmnt #define y0 lkrjhkltr #define y1 ewrgrg typedef long long Int; typedef unsigned long long UInt; typedef vector<int> VI; typedef pair<int, int> PII; typedef complex<double> base;
- Int派
step4
#include<bits/stdc++.h> #include<cmath> #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #include<vector> using namespace std; #define FZ(n) memset((n),0,sizeof(n)) #define FMO(n) memset((n),-1,sizeof(n)) #define MC(n,m) memcpy((n),(m),sizeof(n)) #define F first #define S second #define MP make_pair #define PB push_back #define FOR(x,y) for(__typeof(y.begin())x=y.begin();x!=y.end();x++) #define IOS ios_base::sync_with_stdio(0); cin.tie(0) // Let's Fight!
- IOS; でcin高速化()
Zlobober
#include <cstdio> #include <cassert> #include <memory.h> #include <iostream> #include <tuple> using namespace std; typedef long long llong;
- llong派
W4yneb0t
#include<iostream> #include<cstdio> #include<algorithm> #include<set> #include<map> #include<queue> #include<cassert> #define PB push_back #define MP make_pair #define sz(v) (in((v).size())) #define forn(i,n) for(in i=0;i<(n);++i) #define forv(i,v) forn(i,sz(v)) #define fors(i,s) for(auto i=(s).begin();i!=(s).end();++i) #define all(v) (v).begin(),(v).end() using namespace std; typedef long long in; typedef vector<in> VI; typedef vector<VI> VVI;
- in派
ershov.stanislav
#include <bits/stdc++.h> #define mp make_pair #define fs first #define sc second #define pb push_back #define eb emplace_back #define all(s) (s).begin(), (s).end() #define sz(s) ((int) ((s).size())) typedef long long ll; typedef long double ld; const int INF = 1e9; const ll lINF = 1e18; const double EPS = 1e-12; #ifdef _WIN32 #define LLD "%I64d" #else #define LLD "%lld" #endif using namespace std;
- ll派
- CF環境では_WIN32が定義されている
ilyakor
#include <string> #include <algorithm> #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <sstream> #include <cmath> #include <cassert> #include <queue> #include <bitset> #include <map> #include <set> #define pb push_back #define mp make_pair #define sz(v) ((int)(v).size()) #define all(v) (v).begin(),(v).end() using namespace std; typedef long long int64; typedef pair<int, int> ii; typedef vector<int> vi;
- int64派