#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using db = long double; // or double, if TL is tight
using str = string; // yay python!
using pi = pair<int,int>;
using pl = pair<ll,ll>;
using pd = pair<db,db>;
using vi = vector<int>;
using vb = vector<bool>;
using vl = vector<ll>;
using vd = vector<db>;
using vs = vector<str>;
using vpi = vector<pi>;
using vpl = vector<pl>;
using vpd = vector<pd>;
#define tcT template<class T
#define tcTU tcT, class U
// ^ lol this makes everything look weird but I'll try it
tcT> using V = vector<T>;
tcT, size_t SZ> using AR = array<T,SZ>;
tcT> using PR = pair<T,T>;
// pairs
#define mp make_pair
#define f first
#define s second
// vectors
// oops size(x), rbegin(x), rend(x) need C++17
#define sz(x) int((x).size())
#define bg(x) begin(x)
#define all(x) bg(x), end(x)
#define rall(x) x.rbegin(), x.rend()
#define sor(x) sort(all(x))
#define rsz resize
#define ins insert
#define ft front()
#define bk back()
#define pb push_back
#define eb emplace_back
#define pf push_front
#define rtn return
#define lb lower_bound
#define ub upper_bound
tcT> int lwb(V<T>& a, const T& b) { return int(lb(all(a),b)-bg(a)); }
// loops
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define rep(a) F0R(_,a)
#define each(a,x) for (auto& a: x)
const int MOD = 1e9+7; // 998244353;
const int MX = 2e5+5;
const ll INF = 1e18; // not too close to LLONG_MAX
const db PI = acos((db)-1);
const int dx[4] = {1,0,-1,0}, dy[4] = {0,1,0,-1}; // for every grid problem!!
mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count());
template<class T> using pqg = priority_queue<T,vector<T>,greater<T>>;
// bitwise ops
// also see https://g...content-available-to-author-only...u.org/onlinedocs/gcc/Other-Builtins.html
constexpr int pct(int x) { return __builtin_popcount(x); } // # of bits set
constexpr int bits(int x) { // assert(x >= 0); // make C++11 compatible until USACO updates ...
return x == 0 ? 0 : 31-__builtin_clz(x); } // floor(log2(x))
constexpr int p2(int x) { return 1<<x; }
constexpr int msk2(int x) { return p2(x)-1; }
ll cdiv(ll a, ll b) { return a/b+((a^b)>0&&a%b); } // divide a by b rounded up
ll fdiv(ll a, ll b) { return a/b-((a^b)<0&&a%b); } // divide a by b rounded down
tcT> bool ckmin(T& a, const T& b) {
return b < a ? a = b, 1 : 0; } // set a = min(a,b)
tcT> bool ckmax(T& a, const T& b) {
return a < b ? a = b, 1 : 0; }
tcTU> T fstTrue(T lo, T hi, U f) {
hi ++; assert(lo <= hi); // assuming f is increasing
while (lo < hi) { // find first index such that f is true
T mid = lo+(hi-lo)/2;
f(mid) ? hi = mid : lo = mid+1;
}
return lo;
}
tcTU> T lstTrue(T lo, T hi, U f) {
lo --; assert(lo <= hi); // assuming f is decreasing
while (lo < hi) { // find first index such that f is true
T mid = lo+(hi-lo+1)/2;
f(mid) ? lo = mid : hi = mid-1;
}
return lo;
}
tcT> void remDup(vector<T>& v) { // sort and remove duplicates
sort(all(v)); v.erase(unique(all(v)),end(v)); }
tcTU> void erase(T& t, const U& u) { // don't erase
auto it = t.find(u); assert(it != end(t));
t.erase(it); } // element that doesn't exist from (multi)set
#define tcTUU tcT, class ...U
inline namespace Helpers {
//////////// is_iterable
// https://stackoverflow.com/questions/13830158/check-if-a-variable-type-is-iterable
// this gets used only when we can call begin() and end() on that type
tcT, class = void> struct is_iterable : false_type {};
tcT> struct is_iterable<T, void_t<decltype(begin(declval<T>())),
decltype(end(declval<T>()))
>
> : true_type {};
tcT> constexpr bool is_iterable_v = is_iterable<T>::value;
//////////// is_readable
tcT, class = void> struct is_readable : false_type {};
tcT> struct is_readable<T,
typename std::enable_if_t<
is_same_v<decltype(cin >> declval<T&>()), istream&>
>
> : true_type {};
tcT> constexpr bool is_readable_v = is_readable<T>::value;
//////////// is_printable
// // https://n...content-available-to-author-only...e.es/posts/2020-02-29-is-printable/
tcT, class = void> struct is_printable : false_type {};
tcT> struct is_printable<T,
typename std::enable_if_t<
is_same_v<decltype(cout << declval<T>()), ostream&>
>
> : true_type {};
tcT> constexpr bool is_printable_v = is_printable<T>::value;
}
inline namespace Input {
tcT> constexpr bool needs_input_v = !is_readable_v<T> && is_iterable_v<T>;
tcTUU> void re(T& t, U&... u);
tcTU> void re(pair<T,U>& p); // pairs
// re: read
tcT> typename enable_if<is_readable_v<T>,void>::type re(T& x) { cin >> x; } // default
tcT> void re(complex<T>& c) { T a,b; re(a,b); c = {a,b}; } // complex
tcT> typename enable_if<needs_input_v<T>,void>::type re(T& i); // ex. vectors, arrays
tcTU> void re(pair<T,U>& p) { re(p.f,p.s); }
tcT> typename enable_if<needs_input_v<T>,void>::type re(T& i) {
each(x,i) re(x); }
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
// rv: resize and read vectors
void rv(size_t) {}
tcTUU> void rv(size_t N, V<T>& t, U&... u);
template<class...U> void rv(size_t, size_t N2, U&... u);
tcTUU> void rv(size_t N, V<T>& t, U&... u) {
t.rsz(N); re(t);
rv(N,u...); }
template<class...U> void rv(size_t, size_t N2, U&... u) {
rv(N2,u...); }
// dumb shortcuts to read in ints
void decrement() {} // subtract one from each
tcTUU> void decrement(T& t, U&... u) { --t; decrement(u...); }
#define ints(...) int __VA_ARGS__; re(__VA_ARGS__);
#define int1(...) ints(__VA_ARGS__); decrement(__VA_ARGS__);
}
inline namespace ToString {
tcT> constexpr bool needs_output_v = !is_printable_v<T> && is_iterable_v<T>;
// ts: string representation to print
tcT> typename enable_if<is_printable_v<T>,str>::type ts(T v) {
stringstream ss; ss << fixed << setprecision(15) << v;
return ss.str(); } // default
tcT> str bit_vec(T t) { // bit vector to string
str res = "{"; F0R(i,sz(t)) res += ts(t[i]);
res += "}"; return res; }
str ts(V<bool> v) { return bit_vec(v); }
template<size_t SZ> str ts(bitset<SZ> b) { return bit_vec(b); } // bit vector
tcTU> str ts(pair<T,U> p); // pairs
tcT> typename enable_if<needs_output_v<T>,str>::type ts(T v); // vectors, arrays
tcTU> str ts(pair<T,U> p) { return "("+ts(p.f)+", "+ts(p.s)+")"; }
tcT> typename enable_if<is_iterable_v<T>,str>::type ts_sep(T v, str sep) {
// convert container to string w/ separator sep
bool fst = 1; str res = "";
for (const auto& x: v) {
if (!fst) res += sep;
fst = 0; res += ts(x);
}
return res;
}
tcT> typename enable_if<needs_output_v<T>,str>::type ts(T v) {
return "{"+ts_sep(v,", ")+"}"; }
// for nested DS
template<int, class T> typename enable_if<!needs_output_v<T>,vs>::type
ts_lev(const T& v) { return {ts(v)}; }
template<int lev, class T> typename enable_if<needs_output_v<T>,vs>::type
ts_lev(const T& v) {
if (lev == 0 || !sz(v)) return {ts(v)};
vs res;
for (const auto& t: v) {
if (sz(res)) res.bk += ",";
vs tmp = ts_lev<lev-1>(t);
res.ins(end(res),all(tmp));
}
F0R(i,sz(res)) {
str bef = " "; if (i == 0) bef = "{";
res[i] = bef+res[i];
}
res.bk += "}";
return res;
}
}
inline namespace Output {
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
template<class T, class... U> void pr_sep(ostream& os, str sep, const T& t, const U&... u) {
pr_sep(os,sep,t); os << sep; pr_sep(os,sep,u...); }
// print w/ no spaces
template<class ...T> void pr(const T&... t) { pr_sep(cout,"",t...); }
// print w/ spaces, end with newline
void ps() { cout << "\n"; }
template<class ...T> void ps(const T&... t) { pr_sep(cout," ",t...); ps(); }
// debug to cerr
template<class ...T> void dbg_out(const T&... t) {
pr_sep(cerr," | ",t...); cerr << endl; }
void loc_info(int line, str names) {
cerr << "Line(" << line << ") -> [" << names << "]: "; }
template<int lev, class T> void dbgl_out(const T& t) {
cerr << "\n\n" << ts_sep(ts_lev<lev>(t),"\n") << "\n" << endl; }
#ifdef LOCAL
#define dbg(...) loc_info(__LINE__,#__VA_ARGS__), dbg_out(__VA_ARGS__)
#define dbgl(lev,x) loc_info(__LINE__,#x), dbgl_out<lev>(x)
#else // don't actually submit with this
#define dbg(...) 0
#define dbgl(lev,x) 0
#endif
}
inline namespace FileIO {
void setIn(str s) { freopen(s.c_str(),"r",stdin); }
void setOut(str s) { freopen(s.c_str(),"w",stdout); }
void setIO(str s = "") {
cin.tie(0)->sync_with_stdio(0); // unsync C / C++ I/O streams
// cin.exceptions(cin.failbit);
// throws exception when do smth illegal
// ex. try to read letter into int
if (sz(s)) setIn(s+".in"), setOut(s+".out"); // for old USACO
}
}
// make sure to intialize ALL GLOBAL VARS between tcs!
clock_t beg = clock();
int N,Q;
db eval(pair<db,db> a, db b) {
return a.f*b+a.s;
}
db isect(pair<db,db> a, pair<db,db> b) {
assert(a.f != b.f);
return (a.s-b.s)/(b.f-a.f);
}
V<pair<db,db>> neg(V<pair<db,db>> v) {
each(t,v) t.s *= -1;
return v;
}
V<pair<db,db>> get_best(V<pair<db,db>> v) {
sor(v);
V<pair<db,db>> cand;
F0R(i,sz(v)) if (i == sz(v)-1 || v[i].f != v[i+1].f) cand.pb(v[i]);
return cand;
}
V<pair<db,db>> compress(V<pair<db,db>> v) {
v = get_best(v);
V<pair<db,db>> res;
F0R(i,sz(v)) {
while (sz(res) > 1 && isect(res[sz(res)-2],res.bk) > isect(res.bk,v[i])) res.pop_back();
res.pb(v[i]);
}
return res;
}
void solve(int tc) {
// cerr << "Doing TC #" << tc << " " << (db)(clock()-beg)/CLOCKS_PER_SEC << "\n";
re(N);
V<pair<db,db>> lo, hi;
rep(N) {
db m,q; re(m,q);
if (q < 0) lo.pb({m,q});
else hi.pb({m,q});
}
lo = compress(lo); // increasing
hi = neg(compress(neg(hi))); // decreasing
reverse(all(hi));
// dbg(lo);
// dbg(hi);
if (!sz(lo) || !sz(hi) || lo[0].f >= hi[0].f || lo.bk.f <= hi.bk.f) {
ps("inf");
return;
}
db ans = 0;
db L = -1e12;
dbg("STARTING");
auto check = [&](pair<db,db> lo, pair<db,db> hi, db L, db R) -> db {
// dbg("CHECKING",lo,hi,L,R);
db x = eval(hi,R)-eval(lo,R);
db y = eval(hi,L)-eval(lo,L);
if (R == 1e12) {
dbg("AA",x);
if (x > 0) dbg("BB");
}
if (max(x,y) <= 0) return 0;
if (min(x,y) >= 0) return (x+y)/2*(R-L);
if (x < y) swap(x,y);
// dbg("NEG");
return x/(x-y)*x/2*(R-L);
};
for (int i = 0, j = 0; i < sz(lo) && j < sz(hi); ) {
db a = i == sz(lo)-1 ? 1e12 : isect(lo[i],lo[i+1]);
db b = j == sz(hi)-1 ? 1e12 : isect(hi[j],hi[j+1]);
if (a == 1e12 && b == 1e12) {
dbg("AH",lo[i],hi[j]);
}
assert(L <= min(a,b));
if (a < b) {
ans += check(lo[i],hi[j],L,a);
L = a;
++i;
} else {
ans += check(lo[i],hi[j],L,b);
L = b;
++j;
}
}
cout << fixed << setprecision(15) << ans << "\n";
}
int main() {
setIO();
int TC; re(TC);
FOR(i,1,TC+1) {
pr("Case #",i,": ");
solve(i);
}
}
/* stuff you should look for
* int overflow, array bounds
* special cases (n=1?)
* do smth instead of nothing and stay organized
* WRITE STUFF DOWN
* DON'T GET STUCK ON ONE APPROACH
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIGRiID0gbG9uZyBkb3VibGU7IC8vIG9yIGRvdWJsZSwgaWYgVEwgaXMgdGlnaHQKdXNpbmcgc3RyID0gc3RyaW5nOyAvLyB5YXkgcHl0aG9uIQoKdXNpbmcgcGkgPSBwYWlyPGludCxpbnQ+Owp1c2luZyBwbCA9IHBhaXI8bGwsbGw+Owp1c2luZyBwZCA9IHBhaXI8ZGIsZGI+OwoKdXNpbmcgdmkgPSB2ZWN0b3I8aW50PjsKdXNpbmcgdmIgPSB2ZWN0b3I8Ym9vbD47CnVzaW5nIHZsID0gdmVjdG9yPGxsPjsKdXNpbmcgdmQgPSB2ZWN0b3I8ZGI+OyAKdXNpbmcgdnMgPSB2ZWN0b3I8c3RyPjsKdXNpbmcgdnBpID0gdmVjdG9yPHBpPjsKdXNpbmcgdnBsID0gdmVjdG9yPHBsPjsgCnVzaW5nIHZwZCA9IHZlY3RvcjxwZD47CgojZGVmaW5lIHRjVCB0ZW1wbGF0ZTxjbGFzcyBUCiNkZWZpbmUgdGNUVSB0Y1QsIGNsYXNzIFUKLy8gXiBsb2wgdGhpcyBtYWtlcyBldmVyeXRoaW5nIGxvb2sgd2VpcmQgYnV0IEknbGwgdHJ5IGl0CnRjVD4gdXNpbmcgViA9IHZlY3RvcjxUPjsgCnRjVCwgc2l6ZV90IFNaPiB1c2luZyBBUiA9IGFycmF5PFQsU1o+OyAKdGNUPiB1c2luZyBQUiA9IHBhaXI8VCxUPjsKCi8vIHBhaXJzCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZiBmaXJzdAojZGVmaW5lIHMgc2Vjb25kCgovLyB2ZWN0b3JzCi8vIG9vcHMgc2l6ZSh4KSwgcmJlZ2luKHgpLCByZW5kKHgpIG5lZWQgQysrMTcKI2RlZmluZSBzeih4KSBpbnQoKHgpLnNpemUoKSkKI2RlZmluZSBiZyh4KSBiZWdpbih4KQojZGVmaW5lIGFsbCh4KSBiZyh4KSwgZW5kKHgpCiNkZWZpbmUgcmFsbCh4KSB4LnJiZWdpbigpLCB4LnJlbmQoKSAKI2RlZmluZSBzb3IoeCkgc29ydChhbGwoeCkpIAojZGVmaW5lIHJzeiByZXNpemUKI2RlZmluZSBpbnMgaW5zZXJ0IAojZGVmaW5lIGZ0IGZyb250KCkKI2RlZmluZSBiayBiYWNrKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sgCiNkZWZpbmUgcGYgcHVzaF9mcm9udAojZGVmaW5lIHJ0biByZXR1cm4KCiNkZWZpbmUgbGIgbG93ZXJfYm91bmQKI2RlZmluZSB1YiB1cHBlcl9ib3VuZCAKdGNUPiBpbnQgbHdiKFY8VD4mIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIGludChsYihhbGwoYSksYiktYmcoYSkpOyB9CgovLyBsb29wcwojZGVmaW5lIEZPUihpLGEsYikgZm9yIChpbnQgaSA9IChhKTsgaSA8IChiKTsgKytpKQojZGVmaW5lIEYwUihpLGEpIEZPUihpLDAsYSkKI2RlZmluZSBST0YoaSxhLGIpIGZvciAoaW50IGkgPSAoYiktMTsgaSA+PSAoYSk7IC0taSkKI2RlZmluZSBSMEYoaSxhKSBST0YoaSwwLGEpCiNkZWZpbmUgcmVwKGEpIEYwUihfLGEpCiNkZWZpbmUgZWFjaChhLHgpIGZvciAoYXV0byYgYTogeCkKCmNvbnN0IGludCBNT0QgPSAxZTkrNzsgLy8gOTk4MjQ0MzUzOwpjb25zdCBpbnQgTVggPSAyZTUrNTsKY29uc3QgbGwgSU5GID0gMWUxODsgLy8gbm90IHRvbyBjbG9zZSB0byBMTE9OR19NQVgKY29uc3QgZGIgUEkgPSBhY29zKChkYiktMSk7CmNvbnN0IGludCBkeFs0XSA9IHsxLDAsLTEsMH0sIGR5WzRdID0gezAsMSwwLC0xfTsgLy8gZm9yIGV2ZXJ5IGdyaWQgcHJvYmxlbSEhCm10MTk5Mzcgcm5nKCh1aW50MzJfdCljaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOyAKdGVtcGxhdGU8Y2xhc3MgVD4gdXNpbmcgcHFnID0gcHJpb3JpdHlfcXVldWU8VCx2ZWN0b3I8VD4sZ3JlYXRlcjxUPj47CgovLyBiaXR3aXNlIG9wcwovLyBhbHNvIHNlZSBodHRwczovL2cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnUub3JnL29ubGluZWRvY3MvZ2NjL090aGVyLUJ1aWx0aW5zLmh0bWwKY29uc3RleHByIGludCBwY3QoaW50IHgpIHsgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudCh4KTsgfSAvLyAjIG9mIGJpdHMgc2V0CmNvbnN0ZXhwciBpbnQgYml0cyhpbnQgeCkgeyAvLyBhc3NlcnQoeCA+PSAwKTsgLy8gbWFrZSBDKysxMSBjb21wYXRpYmxlIHVudGlsIFVTQUNPIHVwZGF0ZXMgLi4uCglyZXR1cm4geCA9PSAwID8gMCA6IDMxLV9fYnVpbHRpbl9jbHooeCk7IH0gLy8gZmxvb3IobG9nMih4KSkgCmNvbnN0ZXhwciBpbnQgcDIoaW50IHgpIHsgcmV0dXJuIDE8PHg7IH0KY29uc3RleHByIGludCBtc2syKGludCB4KSB7IHJldHVybiBwMih4KS0xOyB9CgpsbCBjZGl2KGxsIGEsIGxsIGIpIHsgcmV0dXJuIGEvYisoKGFeYik+MCYmYSViKTsgfSAvLyBkaXZpZGUgYSBieSBiIHJvdW5kZWQgdXAKbGwgZmRpdihsbCBhLCBsbCBiKSB7IHJldHVybiBhL2ItKChhXmIpPDAmJmElYik7IH0gLy8gZGl2aWRlIGEgYnkgYiByb3VuZGVkIGRvd24KCnRjVD4gYm9vbCBja21pbihUJiBhLCBjb25zdCBUJiBiKSB7CglyZXR1cm4gYiA8IGEgPyBhID0gYiwgMSA6IDA7IH0gLy8gc2V0IGEgPSBtaW4oYSxiKQp0Y1Q+IGJvb2wgY2ttYXgoVCYgYSwgY29uc3QgVCYgYikgewoJcmV0dXJuIGEgPCBiID8gYSA9IGIsIDEgOiAwOyB9Cgp0Y1RVPiBUIGZzdFRydWUoVCBsbywgVCBoaSwgVSBmKSB7CgloaSArKzsgYXNzZXJ0KGxvIDw9IGhpKTsgLy8gYXNzdW1pbmcgZiBpcyBpbmNyZWFzaW5nCgl3aGlsZSAobG8gPCBoaSkgeyAvLyBmaW5kIGZpcnN0IGluZGV4IHN1Y2ggdGhhdCBmIGlzIHRydWUgCgkJVCBtaWQgPSBsbysoaGktbG8pLzI7CgkJZihtaWQpID8gaGkgPSBtaWQgOiBsbyA9IG1pZCsxOyAKCX0gCglyZXR1cm4gbG87Cn0KdGNUVT4gVCBsc3RUcnVlKFQgbG8sIFQgaGksIFUgZikgewoJbG8gLS07IGFzc2VydChsbyA8PSBoaSk7IC8vIGFzc3VtaW5nIGYgaXMgZGVjcmVhc2luZwoJd2hpbGUgKGxvIDwgaGkpIHsgLy8gZmluZCBmaXJzdCBpbmRleCBzdWNoIHRoYXQgZiBpcyB0cnVlIAoJCVQgbWlkID0gbG8rKGhpLWxvKzEpLzI7CgkJZihtaWQpID8gbG8gPSBtaWQgOiBoaSA9IG1pZC0xOwoJfSAKCXJldHVybiBsbzsKfQp0Y1Q+IHZvaWQgcmVtRHVwKHZlY3RvcjxUPiYgdikgeyAvLyBzb3J0IGFuZCByZW1vdmUgZHVwbGljYXRlcwoJc29ydChhbGwodikpOyB2LmVyYXNlKHVuaXF1ZShhbGwodikpLGVuZCh2KSk7IH0KdGNUVT4gdm9pZCBlcmFzZShUJiB0LCBjb25zdCBVJiB1KSB7IC8vIGRvbid0IGVyYXNlCglhdXRvIGl0ID0gdC5maW5kKHUpOyBhc3NlcnQoaXQgIT0gZW5kKHQpKTsKCXQuZXJhc2UoaXQpOyB9IC8vIGVsZW1lbnQgdGhhdCBkb2Vzbid0IGV4aXN0IGZyb20gKG11bHRpKXNldAoKI2RlZmluZSB0Y1RVVSB0Y1QsIGNsYXNzIC4uLlUKCmlubGluZSBuYW1lc3BhY2UgSGVscGVycyB7CgkvLy8vLy8vLy8vLy8gaXNfaXRlcmFibGUKCS8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEzODMwMTU4L2NoZWNrLWlmLWEtdmFyaWFibGUtdHlwZS1pcy1pdGVyYWJsZQoJLy8gdGhpcyBnZXRzIHVzZWQgb25seSB3aGVuIHdlIGNhbiBjYWxsIGJlZ2luKCkgYW5kIGVuZCgpIG9uIHRoYXQgdHlwZQoJdGNULCBjbGFzcyA9IHZvaWQ+IHN0cnVjdCBpc19pdGVyYWJsZSA6IGZhbHNlX3R5cGUge307Cgl0Y1Q+IHN0cnVjdCBpc19pdGVyYWJsZTxULCB2b2lkX3Q8ZGVjbHR5cGUoYmVnaW4oZGVjbHZhbDxUPigpKSksCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoZW5kKGRlY2x2YWw8VD4oKSkpCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CgkgICAgICAgICAgICAgICAgICAgICAgID4gOiB0cnVlX3R5cGUge307Cgl0Y1Q+IGNvbnN0ZXhwciBib29sIGlzX2l0ZXJhYmxlX3YgPSBpc19pdGVyYWJsZTxUPjo6dmFsdWU7CgoJLy8vLy8vLy8vLy8vIGlzX3JlYWRhYmxlCgl0Y1QsIGNsYXNzID0gdm9pZD4gc3RydWN0IGlzX3JlYWRhYmxlIDogZmFsc2VfdHlwZSB7fTsKCXRjVD4gc3RydWN0IGlzX3JlYWRhYmxlPFQsCgkgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8CgkgICAgICAgICAgICBpc19zYW1lX3Y8ZGVjbHR5cGUoY2luID4+IGRlY2x2YWw8VCY+KCkpLCBpc3RyZWFtJj4KCSAgICAgICAgPgoJICAgID4gOiB0cnVlX3R5cGUge307Cgl0Y1Q+IGNvbnN0ZXhwciBib29sIGlzX3JlYWRhYmxlX3YgPSBpc19yZWFkYWJsZTxUPjo6dmFsdWU7CgoJLy8vLy8vLy8vLy8vIGlzX3ByaW50YWJsZQoJLy8gLy8gaHR0cHM6Ly9uLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmVzL3Bvc3RzLzIwMjAtMDItMjktaXMtcHJpbnRhYmxlLwoJdGNULCBjbGFzcyA9IHZvaWQ+IHN0cnVjdCBpc19wcmludGFibGUgOiBmYWxzZV90eXBlIHt9OwoJdGNUPiBzdHJ1Y3QgaXNfcHJpbnRhYmxlPFQsCgkgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8CgkgICAgICAgICAgICBpc19zYW1lX3Y8ZGVjbHR5cGUoY291dCA8PCBkZWNsdmFsPFQ+KCkpLCBvc3RyZWFtJj4KCSAgICAgICAgPgoJICAgID4gOiB0cnVlX3R5cGUge307Cgl0Y1Q+IGNvbnN0ZXhwciBib29sIGlzX3ByaW50YWJsZV92ID0gaXNfcHJpbnRhYmxlPFQ+Ojp2YWx1ZTsKfQoKaW5saW5lIG5hbWVzcGFjZSBJbnB1dCB7Cgl0Y1Q+IGNvbnN0ZXhwciBib29sIG5lZWRzX2lucHV0X3YgPSAhaXNfcmVhZGFibGVfdjxUPiAmJiBpc19pdGVyYWJsZV92PFQ+OwoJdGNUVVU+IHZvaWQgcmUoVCYgdCwgVSYuLi4gdSk7Cgl0Y1RVPiB2b2lkIHJlKHBhaXI8VCxVPiYgcCk7IC8vIHBhaXJzCgoJLy8gcmU6IHJlYWQKCXRjVD4gdHlwZW5hbWUgZW5hYmxlX2lmPGlzX3JlYWRhYmxlX3Y8VD4sdm9pZD46OnR5cGUgcmUoVCYgeCkgeyBjaW4gPj4geDsgfSAvLyBkZWZhdWx0Cgl0Y1Q+IHZvaWQgcmUoY29tcGxleDxUPiYgYykgeyBUIGEsYjsgcmUoYSxiKTsgYyA9IHthLGJ9OyB9IC8vIGNvbXBsZXgKCXRjVD4gdHlwZW5hbWUgZW5hYmxlX2lmPG5lZWRzX2lucHV0X3Y8VD4sdm9pZD46OnR5cGUgcmUoVCYgaSk7IC8vIGV4LiB2ZWN0b3JzLCBhcnJheXMKCXRjVFU+IHZvaWQgcmUocGFpcjxULFU+JiBwKSB7IHJlKHAuZixwLnMpOyB9Cgl0Y1Q+IHR5cGVuYW1lIGVuYWJsZV9pZjxuZWVkc19pbnB1dF92PFQ+LHZvaWQ+Ojp0eXBlIHJlKFQmIGkpIHsKCQllYWNoKHgsaSkgcmUoeCk7IH0KCXRjVFVVPiB2b2lkIHJlKFQmIHQsIFUmLi4uIHUpIHsgcmUodCk7IHJlKHUuLi4pOyB9IC8vIHJlYWQgbXVsdGlwbGUKCgkvLyBydjogcmVzaXplIGFuZCByZWFkIHZlY3RvcnMKCXZvaWQgcnYoc2l6ZV90KSB7fQoJdGNUVVU+IHZvaWQgcnYoc2l6ZV90IE4sIFY8VD4mIHQsIFUmLi4uIHUpOwoJdGVtcGxhdGU8Y2xhc3MuLi5VPiB2b2lkIHJ2KHNpemVfdCwgc2l6ZV90IE4yLCBVJi4uLiB1KTsKCXRjVFVVPiB2b2lkIHJ2KHNpemVfdCBOLCBWPFQ+JiB0LCBVJi4uLiB1KSB7CgkJdC5yc3ooTik7IHJlKHQpOwoJCXJ2KE4sdS4uLik7IH0KCXRlbXBsYXRlPGNsYXNzLi4uVT4gdm9pZCBydihzaXplX3QsIHNpemVfdCBOMiwgVSYuLi4gdSkgewoJCXJ2KE4yLHUuLi4pOyB9CgoJLy8gZHVtYiBzaG9ydGN1dHMgdG8gcmVhZCBpbiBpbnRzCgl2b2lkIGRlY3JlbWVudCgpIHt9IC8vIHN1YnRyYWN0IG9uZSBmcm9tIGVhY2gKCXRjVFVVPiB2b2lkIGRlY3JlbWVudChUJiB0LCBVJi4uLiB1KSB7IC0tdDsgZGVjcmVtZW50KHUuLi4pOyB9CgkjZGVmaW5lIGludHMoLi4uKSBpbnQgX19WQV9BUkdTX187IHJlKF9fVkFfQVJHU19fKTsKCSNkZWZpbmUgaW50MSguLi4pIGludHMoX19WQV9BUkdTX18pOyBkZWNyZW1lbnQoX19WQV9BUkdTX18pOwp9CgppbmxpbmUgbmFtZXNwYWNlIFRvU3RyaW5nIHsKCXRjVD4gY29uc3RleHByIGJvb2wgbmVlZHNfb3V0cHV0X3YgPSAhaXNfcHJpbnRhYmxlX3Y8VD4gJiYgaXNfaXRlcmFibGVfdjxUPjsKCgkvLyB0czogc3RyaW5nIHJlcHJlc2VudGF0aW9uIHRvIHByaW50Cgl0Y1Q+IHR5cGVuYW1lIGVuYWJsZV9pZjxpc19wcmludGFibGVfdjxUPixzdHI+Ojp0eXBlIHRzKFQgdikgewoJCXN0cmluZ3N0cmVhbSBzczsgc3MgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDE1KSA8PCB2OwoJCXJldHVybiBzcy5zdHIoKTsgfSAvLyBkZWZhdWx0Cgl0Y1Q+IHN0ciBiaXRfdmVjKFQgdCkgeyAvLyBiaXQgdmVjdG9yIHRvIHN0cmluZwoJCXN0ciByZXMgPSAieyI7IEYwUihpLHN6KHQpKSByZXMgKz0gdHModFtpXSk7CgkJcmVzICs9ICJ9IjsgcmV0dXJuIHJlczsgfQoJc3RyIHRzKFY8Ym9vbD4gdikgeyByZXR1cm4gYml0X3ZlYyh2KTsgfQoJdGVtcGxhdGU8c2l6ZV90IFNaPiBzdHIgdHMoYml0c2V0PFNaPiBiKSB7IHJldHVybiBiaXRfdmVjKGIpOyB9IC8vIGJpdCB2ZWN0b3IKCXRjVFU+IHN0ciB0cyhwYWlyPFQsVT4gcCk7IC8vIHBhaXJzCgl0Y1Q+IHR5cGVuYW1lIGVuYWJsZV9pZjxuZWVkc19vdXRwdXRfdjxUPixzdHI+Ojp0eXBlIHRzKFQgdik7IC8vIHZlY3RvcnMsIGFycmF5cwoJdGNUVT4gc3RyIHRzKHBhaXI8VCxVPiBwKSB7IHJldHVybiAiKCIrdHMocC5mKSsiLCAiK3RzKHAucykrIikiOyB9Cgl0Y1Q+IHR5cGVuYW1lIGVuYWJsZV9pZjxpc19pdGVyYWJsZV92PFQ+LHN0cj46OnR5cGUgdHNfc2VwKFQgdiwgc3RyIHNlcCkgewoJCS8vIGNvbnZlcnQgY29udGFpbmVyIHRvIHN0cmluZyB3LyBzZXBhcmF0b3Igc2VwCgkJYm9vbCBmc3QgPSAxOyBzdHIgcmVzID0gIiI7CgkJZm9yIChjb25zdCBhdXRvJiB4OiB2KSB7CgkJCWlmICghZnN0KSByZXMgKz0gc2VwOwoJCQlmc3QgPSAwOyByZXMgKz0gdHMoeCk7CgkJfQoJCXJldHVybiByZXM7Cgl9Cgl0Y1Q+IHR5cGVuYW1lIGVuYWJsZV9pZjxuZWVkc19vdXRwdXRfdjxUPixzdHI+Ojp0eXBlIHRzKFQgdikgewoJCXJldHVybiAieyIrdHNfc2VwKHYsIiwgIikrIn0iOyB9CgoJLy8gZm9yIG5lc3RlZCBEUwoJdGVtcGxhdGU8aW50LCBjbGFzcyBUPiB0eXBlbmFtZSBlbmFibGVfaWY8IW5lZWRzX291dHB1dF92PFQ+LHZzPjo6dHlwZSAKCSAgdHNfbGV2KGNvbnN0IFQmIHYpIHsgcmV0dXJuIHt0cyh2KX07IH0KCXRlbXBsYXRlPGludCBsZXYsIGNsYXNzIFQ+IHR5cGVuYW1lIGVuYWJsZV9pZjxuZWVkc19vdXRwdXRfdjxUPix2cz46OnR5cGUgCgkgIHRzX2xldihjb25zdCBUJiB2KSB7CgkJaWYgKGxldiA9PSAwIHx8ICFzeih2KSkgcmV0dXJuIHt0cyh2KX07CgkJdnMgcmVzOwoJCWZvciAoY29uc3QgYXV0byYgdDogdikgewoJCQlpZiAoc3oocmVzKSkgcmVzLmJrICs9ICIsIjsKCQkJdnMgdG1wID0gdHNfbGV2PGxldi0xPih0KTsKCQkJcmVzLmlucyhlbmQocmVzKSxhbGwodG1wKSk7CgkJfQoJCUYwUihpLHN6KHJlcykpIHsKCQkJc3RyIGJlZiA9ICIgIjsgaWYgKGkgPT0gMCkgYmVmID0gInsiOwoJCQlyZXNbaV0gPSBiZWYrcmVzW2ldOwoJCX0KCQlyZXMuYmsgKz0gIn0iOwoJCXJldHVybiByZXM7Cgl9Cn0KCmlubGluZSBuYW1lc3BhY2UgT3V0cHV0IHsKCXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgcHJfc2VwKG9zdHJlYW0mIG9zLCBzdHIsIGNvbnN0IFQmIHQpIHsgb3MgPDwgdHModCk7IH0KCXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIFU+IHZvaWQgcHJfc2VwKG9zdHJlYW0mIG9zLCBzdHIgc2VwLCBjb25zdCBUJiB0LCBjb25zdCBVJi4uLiB1KSB7CgkJcHJfc2VwKG9zLHNlcCx0KTsgb3MgPDwgc2VwOyBwcl9zZXAob3Msc2VwLHUuLi4pOyB9CgkvLyBwcmludCB3LyBubyBzcGFjZXMKCXRlbXBsYXRlPGNsYXNzIC4uLlQ+IHZvaWQgcHIoY29uc3QgVCYuLi4gdCkgeyBwcl9zZXAoY291dCwiIix0Li4uKTsgfSAKCS8vIHByaW50IHcvIHNwYWNlcywgZW5kIHdpdGggbmV3bGluZQoJdm9pZCBwcygpIHsgY291dCA8PCAiXG4iOyB9Cgl0ZW1wbGF0ZTxjbGFzcyAuLi5UPiB2b2lkIHBzKGNvbnN0IFQmLi4uIHQpIHsgcHJfc2VwKGNvdXQsIiAiLHQuLi4pOyBwcygpOyB9IAoJLy8gZGVidWcgdG8gY2VycgoJdGVtcGxhdGU8Y2xhc3MgLi4uVD4gdm9pZCBkYmdfb3V0KGNvbnN0IFQmLi4uIHQpIHsKCQlwcl9zZXAoY2VyciwiIHwgIix0Li4uKTsgY2VyciA8PCBlbmRsOyB9Cgl2b2lkIGxvY19pbmZvKGludCBsaW5lLCBzdHIgbmFtZXMpIHsKCQljZXJyIDw8ICJMaW5lKCIgPDwgbGluZSA8PCAiKSAtPiBbIiA8PCBuYW1lcyA8PCAiXTogIjsgfQoJdGVtcGxhdGU8aW50IGxldiwgY2xhc3MgVD4gdm9pZCBkYmdsX291dChjb25zdCBUJiB0KSB7CgkJY2VyciA8PCAiXG5cbiIgPDwgdHNfc2VwKHRzX2xldjxsZXY+KHQpLCJcbiIpIDw8ICJcbiIgPDwgZW5kbDsgfQoJI2lmZGVmIExPQ0FMCgkJI2RlZmluZSBkYmcoLi4uKSBsb2NfaW5mbyhfX0xJTkVfXywjX19WQV9BUkdTX18pLCBkYmdfb3V0KF9fVkFfQVJHU19fKQoJCSNkZWZpbmUgZGJnbChsZXYseCkgbG9jX2luZm8oX19MSU5FX18sI3gpLCBkYmdsX291dDxsZXY+KHgpCgkjZWxzZSAvLyBkb24ndCBhY3R1YWxseSBzdWJtaXQgd2l0aCB0aGlzCgkJI2RlZmluZSBkYmcoLi4uKSAwCgkJI2RlZmluZSBkYmdsKGxldix4KSAwCgkjZW5kaWYKfQoKaW5saW5lIG5hbWVzcGFjZSBGaWxlSU8gewoJdm9pZCBzZXRJbihzdHIgcykgIHsgZnJlb3BlbihzLmNfc3RyKCksInIiLHN0ZGluKTsgfQoJdm9pZCBzZXRPdXQoc3RyIHMpIHsgZnJlb3BlbihzLmNfc3RyKCksInciLHN0ZG91dCk7IH0KCXZvaWQgc2V0SU8oc3RyIHMgPSAiIikgewoJCWNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbygwKTsgLy8gdW5zeW5jIEMgLyBDKysgSS9PIHN0cmVhbXMKCQkvLyBjaW4uZXhjZXB0aW9ucyhjaW4uZmFpbGJpdCk7CgkJLy8gdGhyb3dzIGV4Y2VwdGlvbiB3aGVuIGRvIHNtdGggaWxsZWdhbAoJCS8vIGV4LiB0cnkgdG8gcmVhZCBsZXR0ZXIgaW50byBpbnQKCQlpZiAoc3oocykpIHNldEluKHMrIi5pbiIpLCBzZXRPdXQocysiLm91dCIpOyAvLyBmb3Igb2xkIFVTQUNPCgl9Cn0KCi8vIG1ha2Ugc3VyZSB0byBpbnRpYWxpemUgQUxMIEdMT0JBTCBWQVJTIGJldHdlZW4gdGNzIQoKY2xvY2tfdCBiZWcgPSBjbG9jaygpOwoKaW50IE4sUTsKCmRiIGV2YWwocGFpcjxkYixkYj4gYSwgZGIgYikgewoJcmV0dXJuIGEuZipiK2EuczsKfQoKZGIgaXNlY3QocGFpcjxkYixkYj4gYSwgcGFpcjxkYixkYj4gYikgewoJYXNzZXJ0KGEuZiAhPSBiLmYpOwoJcmV0dXJuIChhLnMtYi5zKS8oYi5mLWEuZik7Cn0KClY8cGFpcjxkYixkYj4+IG5lZyhWPHBhaXI8ZGIsZGI+PiB2KSB7CgllYWNoKHQsdikgdC5zICo9IC0xOwoJcmV0dXJuIHY7Cn0KClY8cGFpcjxkYixkYj4+IGdldF9iZXN0KFY8cGFpcjxkYixkYj4+IHYpIHsKCXNvcih2KTsKCVY8cGFpcjxkYixkYj4+IGNhbmQ7CglGMFIoaSxzeih2KSkgaWYgKGkgPT0gc3oodiktMSB8fCB2W2ldLmYgIT0gdltpKzFdLmYpIGNhbmQucGIodltpXSk7CglyZXR1cm4gY2FuZDsKfQoKVjxwYWlyPGRiLGRiPj4gY29tcHJlc3MoVjxwYWlyPGRiLGRiPj4gdikgewoJdiA9IGdldF9iZXN0KHYpOwoJVjxwYWlyPGRiLGRiPj4gcmVzOwoJRjBSKGksc3oodikpIHsKCQl3aGlsZSAoc3oocmVzKSA+IDEgJiYgaXNlY3QocmVzW3N6KHJlcyktMl0scmVzLmJrKSA+IGlzZWN0KHJlcy5iayx2W2ldKSkgcmVzLnBvcF9iYWNrKCk7CgkJcmVzLnBiKHZbaV0pOwoJfQoJcmV0dXJuIHJlczsKfQoKdm9pZCBzb2x2ZShpbnQgdGMpIHsKCS8vIGNlcnIgPDwgIkRvaW5nIFRDICMiIDw8IHRjIDw8ICIgIiA8PCAoZGIpKGNsb2NrKCktYmVnKS9DTE9DS1NfUEVSX1NFQyA8PCAiXG4iOwoJcmUoTik7CglWPHBhaXI8ZGIsZGI+PiBsbywgaGk7CglyZXAoTikgewoJCWRiIG0scTsgcmUobSxxKTsKCQlpZiAocSA8IDApIGxvLnBiKHttLHF9KTsKCQllbHNlIGhpLnBiKHttLHF9KTsKCX0KCWxvID0gY29tcHJlc3MobG8pOyAvLyBpbmNyZWFzaW5nCgloaSA9IG5lZyhjb21wcmVzcyhuZWcoaGkpKSk7IC8vIGRlY3JlYXNpbmcKCXJldmVyc2UoYWxsKGhpKSk7CgkvLyBkYmcobG8pOwoJLy8gZGJnKGhpKTsKCWlmICghc3oobG8pIHx8ICFzeihoaSkgfHwgbG9bMF0uZiA+PSBoaVswXS5mIHx8IGxvLmJrLmYgPD0gaGkuYmsuZikgewoJCXBzKCJpbmYiKTsKCQlyZXR1cm47Cgl9CglkYiBhbnMgPSAwOwoJZGIgTCA9IC0xZTEyOwoJZGJnKCJTVEFSVElORyIpOwoJYXV0byBjaGVjayA9IFsmXShwYWlyPGRiLGRiPiBsbywgcGFpcjxkYixkYj4gaGksIGRiIEwsIGRiIFIpIC0+IGRiIHsKCQkvLyBkYmcoIkNIRUNLSU5HIixsbyxoaSxMLFIpOwoJCWRiIHggPSBldmFsKGhpLFIpLWV2YWwobG8sUik7CgkJZGIgeSA9IGV2YWwoaGksTCktZXZhbChsbyxMKTsKCQlpZiAoUiA9PSAxZTEyKSB7CgkJCWRiZygiQUEiLHgpOwoJCQlpZiAoeCA+IDApIGRiZygiQkIiKTsKCQl9CgkJaWYgKG1heCh4LHkpIDw9IDApIHJldHVybiAwOwoJCWlmIChtaW4oeCx5KSA+PSAwKSByZXR1cm4gKHgreSkvMiooUi1MKTsKCQlpZiAoeCA8IHkpIHN3YXAoeCx5KTsKCQkvLyBkYmcoIk5FRyIpOwoJCXJldHVybiB4Lyh4LXkpKngvMiooUi1MKTsKCX07Cglmb3IgKGludCBpID0gMCwgaiA9IDA7IGkgPCBzeihsbykgJiYgaiA8IHN6KGhpKTsgKSB7CgkJZGIgYSA9IGkgPT0gc3oobG8pLTEgPyAxZTEyIDogaXNlY3QobG9baV0sbG9baSsxXSk7CgkJZGIgYiA9IGogPT0gc3ooaGkpLTEgPyAxZTEyIDogaXNlY3QoaGlbal0saGlbaisxXSk7CgkJaWYgKGEgPT0gMWUxMiAmJiBiID09IDFlMTIpIHsKCQkJZGJnKCJBSCIsbG9baV0saGlbal0pOwoJCX0KCQlhc3NlcnQoTCA8PSBtaW4oYSxiKSk7CgkJaWYgKGEgPCBiKSB7CgkJCWFucyArPSBjaGVjayhsb1tpXSxoaVtqXSxMLGEpOwoJCQlMID0gYTsKCQkJKytpOwoJCX0gZWxzZSB7CgkJCWFucyArPSBjaGVjayhsb1tpXSxoaVtqXSxMLGIpOwoJCQlMID0gYjsKCQkJKytqOwoJCX0KCX0KCWNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDE1KSA8PCBhbnMgPDwgIlxuIjsKfQoKaW50IG1haW4oKSB7CglzZXRJTygpOwoJaW50IFRDOyByZShUQyk7CglGT1IoaSwxLFRDKzEpIHsKCQlwcigiQ2FzZSAjIixpLCI6ICIpOwoJCXNvbHZlKGkpOwoJfQp9CgovKiBzdHVmZiB5b3Ugc2hvdWxkIGxvb2sgZm9yCgkqIGludCBvdmVyZmxvdywgYXJyYXkgYm91bmRzCgkqIHNwZWNpYWwgY2FzZXMgKG49MT8pCgkqIGRvIHNtdGggaW5zdGVhZCBvZiBub3RoaW5nIGFuZCBzdGF5IG9yZ2FuaXplZAoJKiBXUklURSBTVFVGRiBET1dOCgkqIERPTidUIEdFVCBTVFVDSyBPTiBPTkUgQVBQUk9BQ0gKKi8K
prog.cpp:124:14: error: ‘is_same_v’ was not declared in this scope
is_same_v<decltype(cin >> declval<T&>()), istream&>
^~~~~~~~~
prog.cpp:124:14: note: suggested alternative: ‘iswspace_l’
is_same_v<decltype(cin >> declval<T&>()), istream&>
^~~~~~~~~
iswspace_l
prog.cpp:124:64: error: template argument 1 is invalid
is_same_v<decltype(cin >> declval<T&>()), istream&>
^
prog.cpp:125:10: error: template argument 2 is invalid
>
^
prog.cpp:126:6: error: expected unqualified-id before ‘>’ token
> : true_type {};
^
prog.cpp:134:14: error: ‘is_same_v’ was not declared in this scope
is_same_v<decltype(cout << declval<T>()), ostream&>
^~~~~~~~~
prog.cpp:134:14: note: suggested alternative: ‘iswspace_l’
is_same_v<decltype(cout << declval<T>()), ostream&>
^~~~~~~~~
iswspace_l
prog.cpp:134:64: error: template argument 1 is invalid
is_same_v<decltype(cout << declval<T>()), ostream&>
^
prog.cpp:135:10: error: template argument 2 is invalid
>
^
prog.cpp:136:6: error: expected unqualified-id before ‘>’ token
> : true_type {};
^
prog.cpp: In instantiation of ‘str ToString::bit_vec(T) [with T = std::vector<bool>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:181:38: required from here
prog.cpp:179:40: error: no matching function for call to ‘ts(std::vector<bool>::reference)’
str res = "{"; F0R(i,sz(t)) res += ts(t[i]);
~~^~~~~~
prog.cpp:175:55: note: candidate: ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<is_printable_v<T>,str>::type ts(T v) {
^~
prog.cpp:175:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = std::_Bit_reference]’:
prog.cpp:179:40: required from ‘str ToString::bit_vec(T) [with T = std::vector<bool>; str = std::__cxx11::basic_string<char>]’
prog.cpp:181:38: required from here
prog.cpp:175:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Input::re(T&, U& ...) [with T = int; U = {}]’:
prog.cpp:295:6: required from here
prog.cpp:152:43: error: no matching function for call to ‘re()’
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:152:14: note: candidate: ‘template<class T, class ... U> void Input::re(T&, U& ...)’
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
^~
prog.cpp:152:14: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects at least 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:149:13: note: candidate: ‘template<class T, class U> void Input::re(std::pair<_T1, _T2>&)’
tcTU> void re(pair<T,U>& p) { re(p.f,p.s); }
^~
prog.cpp:149:13: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:146:55: note: candidate: ‘template<class T> typename std::enable_if<is_readable_v<T>, void>::type Input::re(T&)’
tcT> typename enable_if<is_readable_v<T>,void>::type re(T& x) { cin >> x; } // default
^~
prog.cpp:146:55: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:147:12: note: candidate: ‘template<class T> void Input::re(std::complex<_Tp>&)’
tcT> void re(complex<T>& c) { T a,b; re(a,b); c = {a,b}; } // complex
^~
prog.cpp:147:12: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:150:55: note: candidate: ‘template<class T> typename std::enable_if<needs_input_v<T>, void>::type Input::re(T&)’
tcT> typename enable_if<needs_input_v<T>,void>::type re(T& i) {
^~
prog.cpp:150:55: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp: In instantiation of ‘void Input::re(T&, U& ...) [with T = long double; U = {}]’:
prog.cpp:152:36: required from ‘void Input::re(T&, U& ...) [with T = long double; U = {long double}]’
prog.cpp:298:17: required from here
prog.cpp:152:43: error: no matching function for call to ‘re()’
prog.cpp:152:14: note: candidate: ‘template<class T, class ... U> void Input::re(T&, U& ...)’
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
^~
prog.cpp:152:14: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects at least 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:149:13: note: candidate: ‘template<class T, class U> void Input::re(std::pair<_T1, _T2>&)’
tcTU> void re(pair<T,U>& p) { re(p.f,p.s); }
^~
prog.cpp:149:13: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:146:55: note: candidate: ‘template<class T> typename std::enable_if<is_readable_v<T>, void>::type Input::re(T&)’
tcT> typename enable_if<is_readable_v<T>,void>::type re(T& x) { cin >> x; } // default
^~
prog.cpp:146:55: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:147:12: note: candidate: ‘template<class T> void Input::re(std::complex<_Tp>&)’
tcT> void re(complex<T>& c) { T a,b; re(a,b); c = {a,b}; } // complex
^~
prog.cpp:147:12: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp:150:55: note: candidate: ‘template<class T> typename std::enable_if<needs_input_v<T>, void>::type Input::re(T&)’
tcT> typename enable_if<needs_input_v<T>,void>::type re(T& i) {
^~
prog.cpp:150:55: note: template argument deduction/substitution failed:
prog.cpp:152:43: note: candidate expects 1 argument, 0 provided
tcTUU> void re(T& t, U&... u) { re(t); re(u...); } // read multiple
~~^~~~~~
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [4]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:227:54: required from ‘void Output::ps(const T& ...) [with T = {char [4]}]’
prog.cpp:308:11: required from here
prog.cpp:220:72: error: no matching function for call to ‘ts(const char [4])’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:175:55: note: candidate: ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<is_printable_v<T>,str>::type ts(T v) {
^~
prog.cpp:175:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = const char*]’:
prog.cpp:220:72: required from ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [4]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:227:54: required from ‘void Output::ps(const T& ...) [with T = {char [4]}]’
prog.cpp:308:11: required from here
prog.cpp:175:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [4]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:227:54: required from ‘void Output::ps(const T& ...) [with T = {char [4]}]’
prog.cpp:308:11: required from here
prog.cpp:181:6: note: candidate: ‘str ToString::ts(V<bool>)’
str ts(V<bool> v) { return bit_vec(v); }
^~
prog.cpp:181:6: note: no known conversion for argument 1 from ‘const char [4]’ to ‘V<bool>’ {aka ‘std::vector<bool>’}
prog.cpp:182:26: note: candidate: ‘template<long unsigned int SZ> str ToString::ts(std::bitset<_Nb>)’
template<size_t SZ> str ts(bitset<SZ> b) { return bit_vec(b); } // bit vector
^~
prog.cpp:182:26: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::bitset<_Nb>’ and ‘const char*’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:185:12: note: candidate: ‘template<class T, class U> str ToString::ts(std::pair<_T1, _T2>)’
tcTU> str ts(pair<T,U> p) { return "("+ts(p.f)+", "+ts(p.s)+")"; }
^~
prog.cpp:185:12: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::pair<_T1, _T2>’ and ‘const char*’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:195:55: note: candidate: ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<needs_output_v<T>,str>::type ts(T v) {
^~
prog.cpp:195:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = const char*]’:
prog.cpp:220:72: required from ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [4]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:227:54: required from ‘void Output::ps(const T& ...) [with T = {char [4]}]’
prog.cpp:308:11: required from here
prog.cpp:195:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [7]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:220:72: error: no matching function for call to ‘ts(const char [7])’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:175:55: note: candidate: ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<is_printable_v<T>,str>::type ts(T v) {
^~
prog.cpp:175:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = const char*]’:
prog.cpp:220:72: required from ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [7]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:175:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [7]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:181:6: note: candidate: ‘str ToString::ts(V<bool>)’
str ts(V<bool> v) { return bit_vec(v); }
^~
prog.cpp:181:6: note: no known conversion for argument 1 from ‘const char [7]’ to ‘V<bool>’ {aka ‘std::vector<bool>’}
prog.cpp:182:26: note: candidate: ‘template<long unsigned int SZ> str ToString::ts(std::bitset<_Nb>)’
template<size_t SZ> str ts(bitset<SZ> b) { return bit_vec(b); } // bit vector
^~
prog.cpp:182:26: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::bitset<_Nb>’ and ‘const char*’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:185:12: note: candidate: ‘template<class T, class U> str ToString::ts(std::pair<_T1, _T2>)’
tcTU> str ts(pair<T,U> p) { return "("+ts(p.f)+", "+ts(p.s)+")"; }
^~
prog.cpp:185:12: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::pair<_T1, _T2>’ and ‘const char*’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:195:55: note: candidate: ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<needs_output_v<T>,str>::type ts(T v) {
^~
prog.cpp:195:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = const char*]’:
prog.cpp:220:72: required from ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [7]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:195:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = int; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:220:72: error: no matching function for call to ‘ts(const int&)’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:175:55: note: candidate: ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<is_printable_v<T>,str>::type ts(T v) {
^~
prog.cpp:175:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = int]’:
prog.cpp:220:72: required from ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = int; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:175:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = int; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:181:6: note: candidate: ‘str ToString::ts(V<bool>)’
str ts(V<bool> v) { return bit_vec(v); }
^~
prog.cpp:181:6: note: no known conversion for argument 1 from ‘const int’ to ‘V<bool>’ {aka ‘std::vector<bool>’}
prog.cpp:182:26: note: candidate: ‘template<long unsigned int SZ> str ToString::ts(std::bitset<_Nb>)’
template<size_t SZ> str ts(bitset<SZ> b) { return bit_vec(b); } // bit vector
^~
prog.cpp:182:26: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::bitset<_Nb>’ and ‘int’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:185:12: note: candidate: ‘template<class T, class U> str ToString::ts(std::pair<_T1, _T2>)’
tcTU> str ts(pair<T,U> p) { return "("+ts(p.f)+", "+ts(p.s)+")"; }
^~
prog.cpp:185:12: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::pair<_T1, _T2>’ and ‘int’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:195:55: note: candidate: ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<needs_output_v<T>,str>::type ts(T v) {
^~
prog.cpp:195:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = int]’:
prog.cpp:220:72: required from ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = int; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:9: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:195:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [3]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:222:38: recursively required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:220:72: error: no matching function for call to ‘ts(const char [3])’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:175:55: note: candidate: ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<is_printable_v<T>,str>::type ts(T v) {
^~
prog.cpp:175:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<is_printable_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = const char*]’:
prog.cpp:222:38: recursively required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:175:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In instantiation of ‘void Output::pr_sep(std::ostream&, str, const T&) [with T = char [3]; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’:
prog.cpp:222:38: recursively required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:181:6: note: candidate: ‘str ToString::ts(V<bool>)’
str ts(V<bool> v) { return bit_vec(v); }
^~
prog.cpp:181:6: note: no known conversion for argument 1 from ‘const char [3]’ to ‘V<bool>’ {aka ‘std::vector<bool>’}
prog.cpp:182:26: note: candidate: ‘template<long unsigned int SZ> str ToString::ts(std::bitset<_Nb>)’
template<size_t SZ> str ts(bitset<SZ> b) { return bit_vec(b); } // bit vector
^~
prog.cpp:182:26: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::bitset<_Nb>’ and ‘const char*’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:185:12: note: candidate: ‘template<class T, class U> str ToString::ts(std::pair<_T1, _T2>)’
tcTU> str ts(pair<T,U> p) { return "("+ts(p.f)+", "+ts(p.s)+")"; }
^~
prog.cpp:185:12: note: template argument deduction/substitution failed:
prog.cpp:220:72: note: mismatched types ‘std::pair<_T1, _T2>’ and ‘const char*’
template<class T> void pr_sep(ostream& os, str, const T& t) { os << ts(t); }
~~^~~
prog.cpp:195:55: note: candidate: ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T)’
tcT> typename enable_if<needs_output_v<T>,str>::type ts(T v) {
^~
prog.cpp:195:55: note: template argument deduction/substitution failed:
prog.cpp: In substitution of ‘template<class T> typename std::enable_if<needs_output_v<T>, std::__cxx11::basic_string<char> >::type ToString::ts(T) [with T = const char*]’:
prog.cpp:222:38: recursively required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = int; U = {char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:222:38: required from ‘void Output::pr_sep(std::ostream&, str, const T&, const U& ...) [with T = char [7]; U = {int, char [3]}; std::ostream = std::basic_ostream<char>; str = std::__cxx11::basic_string<char>]’
prog.cpp:224:54: required from ‘void Output::pr(const T& ...) [with T = {char [7], int, char [3]}]’
prog.cpp:352:21: required from here
prog.cpp:195:55: error: no type named ‘type’ in ‘struct std::enable_if<false, std::__cxx11::basic_string<char> >’
prog.cpp: In function ‘void FileIO::setIn(str)’:
prog.cpp:245:30: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
void setIn(str s) { freopen(s.c_str(),"r",stdin); }
~~~~~~~^~~~~~~~~~~~~~~~~~~~~
prog.cpp: In function ‘void FileIO::setOut(str)’:
prog.cpp:246:30: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
void setOut(str s) { freopen(s.c_str(),"w",stdout); }
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~