Skip to the content.

:warning: library/template/output.hpp

Depends on

Code

#include "library/template/base.hpp"
#include "library/template/type.hpp"

void outputs() {}

TYPES(T, Ts)
void outputs(const std::ostream &os, const T &a, const Ts &...b) {
    os << a;
    (os << ...(os << ' ', b));
}

void print() { std::cout << '\n'; }

TYPES(T, Ts)
void print(const T &a, const Ts &...b) {
    outputs(std::cout, a, b);
    std::cout << "\n";
}

TYPES(T, Ts)
void fin(const T &a, const Ts &...b) {
    print(a, b);
    exit(0);
}
#line 1 "library/template/base.hpp"
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#line 1 "library/template/base.hpp"
#pragma GCC optimize("Ofast")
#line 2 "library/template/type.hpp"

#define TYPE1(T) template <class T>
#define TYPE2(T, U) template <class T, class U>
#define TYPE3(T, U, V) template <class T, class U, class V>
#define TYPE4(T, U, V, W) template <class T, class U, class V, class W>
#define TYPE5(T, U, V, W, X)                                                   \
    template <class T, class U, class V, class W, class X>
#define TYPE(...)                                                              \
    overload5(__VA_ARGS__, TYPE5, TYPE4, TYPE3, TYPE2, TYPE1)(__VA_ARGS__)
#define TYPES1(T) template <class... T>
#define TYPES2(H, T) template <class H, class... T>
#define TYPES(...) overload2(__VA_ARGS__, TYPES2, TYPES1)(__VA_ARGS__)

TYPE(T)
using vec<T> = std::vector<T>;
TYPE(T)
using vvec<T> = vec<vec<T>>;
TYPE(T)
using vvvec<T> = vec<vvec<T>>;
TYPE(T)
using vvvvec<T> = vec<vvvec<T>>;
TYPE(T)
using ptt<T> = std::pair<T, T>;
using ll = long long;
using ld = long double;
using vi = vec<int>;
using vvi = vvec<int>;
using vvvi = vvvec<int>;
using vvvvi = vvvvec<int>;
using vll = vec<ll>;
using vvll = vvec<ll>;
using vvvll = vvvec<ll>;
using vvvvll = vvvvec<ll>;
using vs = vec<std::string>;
using pi = ptt<int>;
using pll = ptt<ll>;

TYPE(T)
using pq = std::priority_queue<T>;
TYPE(T)
using pqg = std::priority_queue<T, vec<T>, std::greater<T>>;
#line 3 "library/template/output.hpp"

void outputs() {}

TYPES(T, Ts)
void outputs(const std::ostream &os, const T &a, const Ts &...b) {
    os << a;
    (os << ...(os << ' ', b));
}

void print() { std::cout << '\n'; }

TYPES(T, Ts)
void print(const T &a, const Ts &...b) {
    outputs(std::cout, a, b);
    std::cout << "\n";
}

TYPES(T, Ts)
void fin(const T &a, const Ts &...b) {
    print(a, b);
    exit(0);
}
Back to top page