This documentation is automatically generated by online-judge-tools/verification-helper
#include "library/util/vector_ops.hpp"
#ifndef SUISEN_VECTOR_OPS
#define SUISEN_VECTOR_OPS
#include <vector>
namespace suisen {
template <typename T>
std::vector<T>& operator+=(std::vector<T> &a, const std::vector<T> &b) {
int n = a.size();
a.resize(n + b.size());
std::copy(b.begin(), b.end(), a.begin() + n);
return a;
}
template <typename T>
std::vector<T> operator+(const std::vector<T> &a, const std::vector<T> &b) {
std::vector<T> c = a; return c += b;
}
template <typename T>
std::vector<T>& operator+=(std::vector<T> &a, const T &b) {
a.push_back(b); return a;
}
template <typename T>
std::vector<T> operator+(const std::vector<T> &a, const T &b) {
std::vector<T> c = a; return c += b;
}
template <typename T>
std::vector<T>& operator+=(std::vector<T> &a, const T &&b) {
a.push_back(b); return a;
}
template <typename T>
std::vector<T> operator+(const std::vector<T> &a, const T &&b) {
std::vector<T> c = a; return c += b;
}
template <typename T>
std::vector<T>& operator*=(std::vector<T> &a, const int repeat) {
int n = a.size();
a.resize(n * repeat);
for (int i = 1; i < repeat; ++i) std::copy(a.begin(), a.end(), a.begin() + i * n);
return a;
}
template <typename T>
std::vector<T> operator*(std::vector<T> &a, const int repeat) {
std::vector<T> c = a; return c *= repeat;
}
} // namespace suisen
#endif // SUISEN_VECTOR_OPS
#line 1 "library/util/vector_ops.hpp"
#include <vector>
namespace suisen {
template <typename T>
std::vector<T>& operator+=(std::vector<T> &a, const std::vector<T> &b) {
int n = a.size();
a.resize(n + b.size());
std::copy(b.begin(), b.end(), a.begin() + n);
return a;
}
template <typename T>
std::vector<T> operator+(const std::vector<T> &a, const std::vector<T> &b) {
std::vector<T> c = a; return c += b;
}
template <typename T>
std::vector<T>& operator+=(std::vector<T> &a, const T &b) {
a.push_back(b); return a;
}
template <typename T>
std::vector<T> operator+(const std::vector<T> &a, const T &b) {
std::vector<T> c = a; return c += b;
}
template <typename T>
std::vector<T>& operator+=(std::vector<T> &a, const T &&b) {
a.push_back(b); return a;
}
template <typename T>
std::vector<T> operator+(const std::vector<T> &a, const T &&b) {
std::vector<T> c = a; return c += b;
}
template <typename T>
std::vector<T>& operator*=(std::vector<T> &a, const int repeat) {
int n = a.size();
a.resize(n * repeat);
for (int i = 1; i < repeat; ++i) std::copy(a.begin(), a.end(), a.begin() + i * n);
return a;
}
template <typename T>
std::vector<T> operator*(std::vector<T> &a, const int repeat) {
std::vector<T> c = a; return c *= repeat;
}
} // namespace suisen