This documentation is automatically generated by online-judge-tools/verification-helper
#include "misc/top_two.hpp"大きい 2 つの要素を管理する構造体です。
(1) TopTwo<T, inf> t()
(2) TopTwo<T, inf> t(T a, T b)
大きい 2 つの要素を a, b として作成します。
a と b は順不同です。
a と b を指定しなかった場合、それぞれ -inf で初期化されます。
bool t.add(T x)
x を追加します。
$(a, b)$ が更新された場合には true を、更新されなかった場合は false を返します。
#pragma once
template <class T, T inf> struct TopTwo {
T a, b;
TopTwo() {
a = -inf;
b = -inf;
}
TopTwo(T a, T b) : a(a), b(b) {
if (a < b) {
std::swap(this->a, this->b);
}
}
bool add(T x) {
if (a < x) {
b = a;
a = x;
return true;
} else if (b < x) {
b = x;
return true;
}
return false;
}
};#line 2 "misc/top_two.hpp"
template <class T, T inf> struct TopTwo {
T a, b;
TopTwo() {
a = -inf;
b = -inf;
}
TopTwo(T a, T b) : a(a), b(b) {
if (a < b) {
std::swap(this->a, this->b);
}
}
bool add(T x) {
if (a < x) {
b = a;
a = x;
return true;
} else if (b < x) {
b = x;
return true;
}
return false;
}
};