제출 #1151349

#제출 시각아이디문제언어결과실행 시간메모리
1151349Zero_OPFish 2 (JOI22_fish2)C++20
컴파일 에러
0 ms0 KiB
//https://codeforces.com/blog/entry/101003?#comment-898608 This mf took me a whole day :(((((((((( #include <bits/stdc++.h> using namespace std; //loops (warning : long long) #define FOR(i, l, r) for(int i = (l); i < (r); ++i) #define ROF(i, r, l) for(int i = (r - 1); i >= l; --i) //pairs, tuples #define mp make_pair #define mt make_tuple #define ff first #define ss second //vectors #define all(v) begin(v), end(v) #define rall(v) rbegin(v), rend(v) #define pb push_back #define eb emplace_back #define sum_of(v) accumulate(all(v), 0ll) #define sz(v) (int)v.size() #define compact(v) v.erase(unique(all(v)), end(v)) //binary search #define lwb lower_bound #define upb upper_bound //other stuffs #define dbg(x) "[" #x " = " << (x) << "]" #define file(task) if(fopen(task".inp", "r")){ freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); } template<typename T> bool minimize(T& a, const T& b){ if(a > b) return a = b, true; return false; } template<typename T> bool maximize(T& a, const T& b){ if(a < b) return a = b, true; return false; } using ll = long long; using ull = unsigned long long; using ld = long double; using db = double; using pi = pair<int, int>; using pl = pair<ll, ll>; using vi = vector<int>; using vb = vector<bool>; using vl = vector<ll>; using vpi = vector<pi>; using vpl = vector<pl>; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAX = 1e5 + 5; const ll inf = 1e15 + 100; int N, Q; ll a[MAX]; ll pref[MAX]; set<int> left_endpoint[MAX], right_endpoint[MAX]; struct FenwickTree{ const int offset = 0; vl bit; void init(int n){ bit = vl(n+1, 0); } void update(int i, ll v){ i += offset; for(; i < sz(bit); i += i & (-i)) bit[i] += v; } ll queryPrefix(int i){ ll sum = 0; i += offset; for(; i > 0; i -= i & (-i)) sum += bit[i]; return sum; } ll query(int l, int r){ return queryPrefix(r) - queryPrefix(l-1); } } Fenwick; struct SegmentTreeMinCount{ struct Node{ int mn, cnt; Node() : mn(0), cnt(0) {} Node(int mn, int cnt) : mn(mn), cnt(cnt) {} friend Node operator + (const Node& a, const Node& b){ if(a.mn == b.mn) return Node(a.mn, a.cnt + b.cnt); else return (a.mn < b.mn ? a : b); } }; vector<Node> st; vi lazy; int N; SegmentTreeMinCount(int n) : N(n), st(n << 2), lazy(n << 2) {} void apply(int id, int delta){ st[id].mn += delta; lazy[id] += delta; } void down(int id){ if(lazy[id] != 0){ apply(id << 1, lazy[id]); apply(id << 1 | 1, lazy[id]); lazy[id] = 0; } } void build(int id, int l, int r){ st[id].cnt = r - l + 1; if(l < r){ int mid = l + r >> 1; build(id << 1, l, mid); build(id << 1 | 1, mid + 1, r); } } void update(int id, int l, int r, int u, int v, int delta){ if(u <= l && r <= v) apply(id, delta); else{ int mid = l + r >> 1; down(id); if(u <= mid) update(id << 1, l, mid, u, v, delta); if(mid < v) update(id << 1 | 1, mid + 1, r, u, v, delta); st[id] = st[id << 1] + st[id << 1 | 1]; } } Node query(int id, int l, int r, int u, int v){ if(u <= l && r <= v) return st[id]; int mid = l + r >> 1; down(id); if(u > mid) return query(id << 1 | 1, mid + 1, r, u, v); if(mid >= v) return query(id << 1, l, mid, u, v); return query(id << 1, l, mid, u, v) + query(id << 1 | 1, mid + 1, r, u, v); } int count_min(int l, int r){ Node cur = query(1, 1, N, l, r); return cur.cnt; } void debug(int id, int l, int r){ if(l == r){ cout << st[id].mn << ' '; if(r == N) cout << '\n'; } else{ int mid = l + r >> 1; down(id); debug(id << 1, l, mid); debug(id << 1 | 1, mid + 1, r); } } } MinCount(0); struct SegmentTreeRightEndpoint{ vl st, lazy; void init(int n){ st.resize(4 * n, 0); lazy.resize(4 * n, 0); } void apply(int id, ll val){ st[id] += val; lazy[id] += val; } void down(int id){ if(lazy[id] != 0){ apply(id << 1, lazy[id]); apply(id << 1 | 1, lazy[id]); lazy[id] = 0; } } void build(int id, int l, int r){ if(l == r){ //pref[j-1] - pref[i] < a[j] //<=> pref[j-1] - a[j] < pref[i] st[id] = pref[l-1] - a[l]; } else{ int mid = l + r >> 1; build(id << 1, l, mid); build(id << 1 | 1, mid + 1, r); st[id] = min(st[id << 1], st[id << 1 | 1]); } } void update(int id, int l, int r, int u, int v, ll delta){ if(u <= l && r <= v) apply(id, delta); else{ int mid = l + r >> 1; down(id); if(u <= mid) update(id << 1, l, mid, u, v, delta); if(mid < v) update(id << 1 | 1, mid + 1, r, u, v, delta); st[id] = min(st[id << 1], st[id << 1 | 1]); } } int find_next(int id, int l, int r, int u, int v, ll s){ if(v < l || u > r) return -1; if(st[id] >= s) return -1; if(u <= l && r <= v){ while(l < r){ int mid = l + r >> 1; down(id); if(st[id << 1] < s) id = id << 1, r = mid; else id = id << 1 | 1, l = mid + 1; } return l; } else{ int mid = l + r >> 1; down(id); int go = find_next(id << 1, l, mid, u, v, s); if(go != -1) return go; return find_next(id << 1 | 1, mid + 1, r, u, v, s); } } int find_next(int l, int r, ll s){ if(l > r) return N+1; int R = find_next(1, 1, N, l, r, s); if(R == -1) return N+1; return R; } } TreeRightEndpoint; struct SegmentTreeLeftEndpoint{ vl st, lazy; void init(int n){ st.resize(4 * n, 0); lazy.resize(4 * n, 0); } void apply(int id, ll val){ st[id] += val; lazy[id] += val; } void down(int id){ if(lazy[id] != 0){ apply(id << 1, lazy[id]); apply(id << 1 | 1, lazy[id]); lazy[id] = 0; } } void build(int id, int l, int r){ if(l == r){ //pref[j-1] - pref[i] < a[i] //pref[j] < pref[i] + a[i] st[id] = pref[l] + a[l]; } else{ int mid = l + r >> 1; build(id << 1, l, mid); build(id << 1 | 1, mid + 1, r); st[id] = max(st[id << 1], st[id << 1 | 1]); } } void update(int id, int l, int r, int u, int v, ll delta){ if(u <= l && r <= v) apply(id, delta); else{ int mid = l + r >> 1; down(id); if(u <= mid) update(id << 1, l, mid, u, v, delta); if(mid < v) update(id << 1 | 1, mid + 1, r, u, v, delta); st[id] = max(st[id << 1], st[id << 1 | 1]); } } int find_next(int id, int l, int r, int u, int v, ll s){ if(v < l || u > r) return -1; if(st[id] <= s) return -1; if(u <= l && r <= v){ while(l < r){ int mid = l + r >> 1; down(id); if(st[id << 1 | 1] > s) id = id << 1 | 1, l = mid + 1; else id = id << 1, r = mid; } return l; } else{ int mid = l + r >> 1; down(id); int go = find_next(id << 1 | 1, mid + 1, r, u, v, s); if(go != -1) return go; return find_next(id << 1, l, mid, u, v, s); } } int find_next(int l, int r, ll s){ if(l > r) return 0; int L = find_next(1, 1, N, l, r, s); if(L == -1) L = 0; return L; } } TreeLeftEndpoint; void add_segment(int l, int r){ cout << "insert : " << l << ' ' << r << '\n'; assert(r-l > 1); MinCount.update(1, 1, N, l+1, r-1, +1); left_endpoint[l].insert(r); right_endpoint[r].insert(l); } void erase_segment(int l, int r){ cout << "erase : " << l << ' ' << r << '\n'; assert(r-l > 1); MinCount.update(1, 1, N, l+1, r-1, -1); left_endpoint[l].erase(r); right_endpoint[r].erase(l); } bool bad(int l, int r){ assert(r-l > 1); return min(a[l], a[r]) > Fenwick.query(l+1, r-1); } void update(int i, int x){ vpi segments; int l = i-1, r = i+1; while(true){ if(bad(l, r)) segments.eb(l, r); if(l == 0 && r == N+1) break; if(a[l] < a[r]) l = TreeLeftEndpoint.find_next(1, l-1, Fenwick.queryPrefix(r-1)); //can't extend right else r = TreeRightEndpoint.find_next(r+1, N, Fenwick.queryPrefix(l)); //can't extend left } for(auto r : left_endpoint[i]) segments.eb(i, r); for(auto l : right_endpoint[i]) segments.eb(l, i); for(auto r : left_endpoint[i-1]) segments.eb(i-1, r); for(auto l : right_endpoint[i+1]) segments.eb(l, i+1); sort(all(segments)); compact(segments); for(auto [l, r] : segments) erase_segment(l, r); segments.clear(); Fenwick.update(i, -a[i] + x); TreeLeftEndpoint.update(1, 1, N, i, N, -a[i] + x); TreeLeftEndpoint.update(1, 1, N, i, i, -a[i] + x); if(i < N) TreeRightEndpoint.update(1, 1, N, i+1, N, -a[i] + x); TreeRightEndpoint.update(1, 1, N, i, i, +a[i] - x); a[i] = x; l = i-1, r = i+1; while(true){ if(bad(l, r)) { // cout << dbg(l) << dbg(r) << '\n'; segments.eb(l, r); } if(l == 0 && r == N+1) break; if(a[l] < a[r]) l = TreeLeftEndpoint.find_next(1, l-1, Fenwick.queryPrefix(r-1)); //can't extend right else r = TreeRightEndpoint.find_next(r+1, N, Fenwick.queryPrefix(l)); //can't extend left } r = i+1; while(true){ if(bad(i-1, r)) segments.eb(i-1, r); if(r == N+1) break; r = TreeRightEndpoint.find_next(r+1, N, Fenwick.queryPrefix(i-1)); } l = i-1; while(true){ if(bad(l, i+1)) { cout << dbg(l) << dbg(i+1) << '\n'; if(l == 1 && i+1 == 3){ cout << Fenwick.query(2, 2) << ' ' << min(a[1], a[3]) << '\n'; cout << a[1] << ' ' << a[3] << '\n'; } segments.eb(l, i+1); } if(l == 0) break; l = TreeLeftEndpoint.find_next(1, l-1, Fenwick.queryPrefix(i)); } if(i+2 <= N){ r = i+2; while(true){ if(!bad(i, r)) segments.eb(i, r); if(r == N+1) break; //pref[r-1] - pref[i] < a[r] r = TreeRightEndpoint.find_next(r+1, N, Fenwick.queryPrefix(i)); } } if(i-2 >= 0){ l = i - 2; while(true){ if(!bad(l, i)) segments.eb(l, i); if(l == 0) break; l = TreeLeftEndpoint.find_next(1, l-1, Fenwick.queryPrefix(i-1)); } } sort(all(segments)); compact(segments); for(auto [l, r] : segments) add_segment(l, r); } ll query(int l, int r){ int R = r; while(true){ int nxt = TreeLeftEndpoint.find_next(1, R-1, Fenwick.queryPrefix(r)); //pref[r] - pref[R-1] < a[R-1] <=> pref[r] < a[R-1] + pref[R-1] if(nxt < l) break; R = nxt; } int L = l; while(true){ int nxt = TreeRightEndpoint.find_next(L+1, N, Fenwick.queryPrefix(l-1)); //pref[L] - pref[l-1] > a[L+1] <=> pref[L] - a[L+1] > pref[l-1] if(nxt > r) break; L = nxt; } cout << dbg(L) << dbg(R) << '\n'; MinCount.debug(1, 1, N); int result = MinCount.count_min(L, R); return result; } void testcase(int ntestcase){ cin >> N; a[0] = a[N+1] = inf; FOR(i, 1, N+1) { cin >> a[i]; pref[i] = pref[i-1] + a[i]; } Fenwick.init(N); TreeLeftEndpoint.init(N); TreeRightEndpoint.init(N); MinCount = SegmentTreeMinCount(N); FOR(i, 1, N+1) Fenwick.update(i, +a[i]); TreeLeftEndpoint.build(1, 1, N); TreeRightEndpoint.build(1, 1, N); MinCount.build(1, 1, N); FOR(i, 0, N){ //finding all j that min(a[i], a[j]) > sum[i+1, j-1] //<=> pref[j-1] - pref[i] < min(a[i], a[j]) int j = i+2; while(true){ if(bad(i, j)) add_segment(i, j); if(j > N) break; j = TreeRightEndpoint.find_next(j+1, N, pref[i]); } } // ROF(j, N+2, 2){ // //finding all i that min(a[i], a[j]) > sum[i+1, j-1] // //<=> pref[j-1] - pref[i] < min(a[i], a[j]) // //<=> pref[j-1] - pref[i] < a[i] // //<=> pref[j-1] < a[i] + pref[i] // int i = j - 2; // while(true){ // if(pref[j-1] - pref[i] < min(a[i], a[j])) add_segment(i, j); // if(i < 1) break; // i = TreeLeftEndpoint.find_next(1, i-1, pref[j-1]); // } // } // sort(all(segments)); // for(auto [l, r] : segments) cout << l << ' ' << r << '\n'; cin >> Q; while(Q--){ int t; cin >> t; if(t == 1){ int x, y; cin >> x >> y; update(x, y); } else{ int l, r; cin >> l >> r; cout << query(l, r) << '\n'; } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("main.out", "w", stdout); #endif // LOCAL int T = 1; // cin >> T; FOR(i, 0, T) testcase(i); return 0; } /* Ý tưởng : a[0] = a[N+1] = \infty Xét tất cả các đoạn [l, r] thỏa : - min(a[l-1], a[r+1]) > pref[r] - pref[l-1] (*) : Do những vị trí trong [l, r] không thể sống sót Tính chất của điều kiện (*) : - Chỉ có nhiều nhất N đoạn thỏa mãn - Với hai đoạn thẳng bất kỳ, chúng chỉ có thể không giao nhau hoặc bao nhau - Với mỗi vị trí i, số lượng đoạn thẳng [l, r] có thể chứa i nhiều nhất là \log_2(10^9) Giờ đưa hết các đoạn thẳng thỏa mãn (*) vào tập S để xử lý truy vấn, cập nhật Cập nhật vị trí i thành giá trị x : - Ta chỉ cần quan tâm các đoạn [l, r] có đầu mút là i-1/i/i+1 : + Ta xóa hết các đoạn hiện tại chứa i + Ta cập nhật lại các CTDl rồi xử lý lại, bước thêm những đoạn có chứa i - Dùng một cây BIT xử lý bước tính tổng nhanh Truy vấn đoạn [l, r] : - Ta sẽ tìm vị trí l' và r' : + l' là vị trí trái nhất mà a[l'] > sum[l...l'-1] (nếu không có thì sẽ là l) + r' là vị trí phải nhất mà a[r'] > sum[r'+1...r] (nếu không có thì sẽ là r) - Đếm số vị trí j trong đoạn [l', r'] mà không có đoạn nào thuộc S phủ lên j 68 92 56 40 39 insert : 0 6 insert : 1 3 */

컴파일 시 표준 에러 (stderr) 메시지

fish2.cpp:2:1: error: 'This' does not name a type
    2 | This mf took me a whole day :((((((((((
      | ^~~~
In file included from /usr/include/c++/11/cmath:43,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/ext/type_traits.h:162:35: error: 'bool __gnu_cxx::__is_null_pointer' redeclared as different kind of entity
  162 |   __is_null_pointer(std::nullptr_t)
      |                                   ^
/usr/include/c++/11/ext/type_traits.h:157:5: note: previous declaration 'template<class _Type> bool __gnu_cxx::__is_null_pointer(_Type)'
  157 |     __is_null_pointer(_Type)
      |     ^~~~~~~~~~~~~~~~~
/usr/include/c++/11/ext/type_traits.h:162:26: error: 'nullptr_t' is not a member of 'std'
  162 |   __is_null_pointer(std::nullptr_t)
      |                          ^~~~~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:431:26: error: 'std::size_t' has not been declared
  431 |   template<typename _Tp, std::size_t _Size>
      |                          ^~~
/usr/include/c++/11/type_traits:432:25: error: '_Size' was not declared in this scope
  432 |     struct is_array<_Tp[_Size]>
      |                         ^~~~~
/usr/include/c++/11/type_traits:432:31: error: template argument 1 is invalid
  432 |     struct is_array<_Tp[_Size]>
      |                               ^
/usr/include/c++/11/type_traits:537:42: error: 'nullptr_t' is not a member of 'std'
  537 |     struct __is_null_pointer_helper<std::nullptr_t>
      |                                          ^~~~~~~~~
/usr/include/c++/11/type_traits:537:51: error: template argument 1 is invalid
  537 |     struct __is_null_pointer_helper<std::nullptr_t>
      |                                                   ^
/usr/include/c++/11/type_traits:1361:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1361 |     : public integral_constant<std::size_t, alignof(_Tp)>
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1361:57: error: template argument 1 is invalid
 1361 |     : public integral_constant<std::size_t, alignof(_Tp)>
      |                                                         ^
/usr/include/c++/11/type_traits:1370:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1370 |     : public integral_constant<std::size_t, 0> { };
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1370:46: error: template argument 1 is invalid
 1370 |     : public integral_constant<std::size_t, 0> { };
      |                                              ^
/usr/include/c++/11/type_traits:1372:26: error: 'std::size_t' has not been declared
 1372 |   template<typename _Tp, std::size_t _Size>
      |                          ^~~
/usr/include/c++/11/type_traits:1373:21: error: '_Size' was not declared in this scope
 1373 |     struct rank<_Tp[_Size]>
      |                     ^~~~~
/usr/include/c++/11/type_traits:1373:27: error: template argument 1 is invalid
 1373 |     struct rank<_Tp[_Size]>
      |                           ^
/usr/include/c++/11/type_traits:1374:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1374 |     : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1374:65: error: template argument 1 is invalid
 1374 |     : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
      |                                                                 ^
/usr/include/c++/11/type_traits:1378:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1378 |     : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1378:65: error: template argument 1 is invalid
 1378 |     : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
      |                                                                 ^
/usr/include/c++/11/type_traits:1383:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1383 |     : public integral_constant<std::size_t, 0> { };
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1383:46: error: template argument 1 is invalid
 1383 |     : public integral_constant<std::size_t, 0> { };
      |                                              ^
/usr/include/c++/11/type_traits:1385:42: error: 'std::size_t' has not been declared
 1385 |   template<typename _Tp, unsigned _Uint, std::size_t _Size>
      |                                          ^~~
/usr/include/c++/11/type_traits:1386:23: error: '_Size' was not declared in this scope
 1386 |     struct extent<_Tp[_Size], _Uint>
      |                       ^~~~~
/usr/include/c++/11/type_traits:1386:36: error: template argument 1 is invalid
 1386 |     struct extent<_Tp[_Size], _Uint>
      |                                    ^
/usr/include/c++/11/type_traits:1387:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1387 |     : public integral_constant<std::size_t,
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1388:45: error: '_Size' was not declared in this scope
 1388 |                                _Uint == 0 ? _Size : extent<_Tp,
      |                                             ^~~~~
/usr/include/c++/11/type_traits:1389:77: error: template argument 1 is invalid
 1389 |                                                            _Uint - 1>::value>
      |                                                                             ^
/usr/include/c++/11/type_traits:1394:37: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
 1394 |     : public integral_constant<std::size_t,
      |                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/type_traits:1396:73: error: template argument 1 is invalid
 1396 |                                                        _Uint - 1>::value>
      |                                                                         ^
/usr/include/c++/11/type_traits:1984:26: error: 'std::size_t' has not been declared
 1984 |   template<typename _Tp, std::size_t _Size>
      |                          ^~~
/usr/include/c++/11/type_traits:1985:30: error: '_Size' was not declared in this scope
 1985 |     struct remove_extent<_Tp[_Size]>
      |                              ^~~~~
/usr/include/c++/11/type_traits:1985:36: error: template argument 1 is invalid
 1985 |     struct remove_extent<_Tp[_Size]>
      |                                    ^
/usr/include/c++/11/type_traits:1997:26: error: 'std::size_t' has not been declared
 1997 |   template<typename _Tp, std::size_t _Size>
      |                          ^~~
/usr/include/c++/11/type_traits:1998:35: error: '_Size' was not declared in this scope
 1998 |     struct remove_all_extents<_Tp[_Size]>
      |                                   ^~~~~
/usr/include/c++/11/type_traits:1998:41: error: template argument 1 is invalid
 1998 |     struct remove_all_extents<_Tp[_Size]>
      |                                         ^
/usr/include/c++/11/type_traits:2056:12: error: 'std::size_t' has not been declared
 2056 |   template<std::size_t _Len>
      |            ^~~
/usr/include/c++/11/type_traits:2061:30: error: '_Len' was not declared in this scope
 2061 |         unsigned char __data[_Len];
      |                              ^~~~
/usr/include/c++/11/type_traits:2076:12: error: 'std::size_t' has not been declared
 2076 |   template<std::size_t _Len, std::size_t _Align =
      |            ^~~
/usr/include/c++/11/type_traits:2076:30: error: 'std::size_t' has not been declared
 2076 |   template<std::size_t _Len, std::size_t _Align =
      |                              ^~~
/usr/include/c++/11/type_traits:2077:55: error: '_Len' was not declared in this scope
 2077 |            __alignof__(typename __aligned_storage_msa<_Len>::__type)>
      |                                                       ^~~~
/usr/include/c++/11/type_traits:2077:59: error: template argument 1 is invalid
 2077 |            __alignof__(typename __aligned_storage_msa<_Len>::__type)>
      |                                                           ^
/usr/include/c++/11/type_traits:2082:30: error: '_Len' was not declared in this scope
 2082 |         unsigned char __data[_Len];
      |                              ^~~~
/usr/include/c++/11/type_traits:2083:44: error: '_Align' was not declared in this scope
 2083 |         struct __attribute__((__aligned__((_Align)))) { } __align;
      |                                            ^~~~~~
In file included from /usr/include/c++/11/bits/iterator_concepts.h:36,
                 from /usr/include/c++/11/bits/stl_iterator_base_types.h:71,
                 from /usr/include/c++/11/bits/stl_algobase.h:65,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/ptr_traits.h:119:27: error: 'ptrdiff_t' was not declared in this scope
  119 |         = __detected_or_t<ptrdiff_t, __difference_type, _Ptr>;
      |                           ^~~~~~~~~
/usr/include/c++/11/bits/ptr_traits.h:1:1: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
  +++ |+#include <cstddef>
    1 | // Pointer Traits -*- C++ -*-
/usr/include/c++/11/bits/ptr_traits.h:119:61: error: template argument 1 is invalid
  119 |         = __detected_or_t<ptrdiff_t, __difference_type, _Ptr>;
      |                                                             ^
/usr/include/c++/11/bits/ptr_traits.h:138:15: error: 'ptrdiff_t' does not name a type
  138 |       typedef ptrdiff_t difference_type;
      |               ^~~~~~~~~
/usr/include/c++/11/bits/ptr_traits.h:138:15: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
In file included from /usr/include/c++/11/bits/stl_iterator_base_types.h:71,
                 from /usr/include/c++/11/bits/stl_algobase.h:65,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/iterator_concepts.h:153:31: error: 'ptrdiff_t' does not name a type
  153 |     { using difference_type = ptrdiff_t; };
      |                               ^~~~~~~~~
/usr/include/c++/11/bits/iterator_concepts.h:38:1: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   37 | #include <bits/ranges_cmp.h>    // identity, ranges::less
  +++ |+#include <cstddef>
   38 | 
In file included from /usr/include/c++/11/bits/stl_algobase.h:65,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/stl_iterator_base_types.h:125:67: error: 'ptrdiff_t' does not name a type
  125 |   template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
      |                                                                   ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator_base_types.h:72:1: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   71 | # include <bits/iterator_concepts.h>
  +++ |+#include <cstddef>
   72 | #endif
/usr/include/c++/11/bits/stl_iterator_base_types.h:203:33: error: 'ptrdiff_t' does not name a type
  203 |       using difference_type   = ptrdiff_t;
      |                                 ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator_base_types.h:203:33: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
In file included from /usr/include/c++/11/bits/stl_algobase.h:66,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/stl_iterator_base_funcs.h:110:5: error: 'ptrdiff_t' does not name a type
  110 |     ptrdiff_t
      |     ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator_base_funcs.h:66:1: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   65 | #include <debug/assertions.h>
  +++ |+#include <cstddef>
   66 | 
/usr/include/c++/11/bits/stl_iterator_base_funcs.h:116:5: error: 'ptrdiff_t' does not name a type
  116 |     ptrdiff_t
      |     ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator_base_funcs.h:116:5: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:126:26: error: declaration of 'operator new' as non-function
  126 | _GLIBCXX_NODISCARD void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      |                          ^~~~~~~~
/usr/include/c++/11/new:126:44: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  126 | _GLIBCXX_NODISCARD void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      |                                            ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:127:41: error: attributes after parenthesized initializer ignored [-fpermissive]
  127 |   __attribute__((__externally_visible__));
      |                                         ^
/usr/include/c++/11/new:128:26: error: declaration of 'operator new []' as non-function
  128 | _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      |                          ^~~~~~~~
/usr/include/c++/11/new:128:46: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  128 | _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      |                                              ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:129:41: error: attributes after parenthesized initializer ignored [-fpermissive]
  129 |   __attribute__((__externally_visible__));
      |                                         ^
/usr/include/c++/11/new:135:29: error: 'std::size_t' has not been declared
  135 | void operator delete(void*, std::size_t) _GLIBCXX_USE_NOEXCEPT
      |                             ^~~
/usr/include/c++/11/new:137:31: error: 'std::size_t' has not been declared
  137 | void operator delete[](void*, std::size_t) _GLIBCXX_USE_NOEXCEPT
      |                               ^~~
/usr/include/c++/11/new:140:26: error: declaration of 'operator new' as non-function
  140 | _GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
      |                          ^~~~~~~~
/usr/include/c++/11/new:140:44: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  140 | _GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
      |                                            ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:140:52: error: expected primary-expression before 'const'
  140 | _GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
      |                                                    ^~~~~
/usr/include/c++/11/new:142:26: error: declaration of 'operator new []' as non-function
  142 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
      |                          ^~~~~~~~
/usr/include/c++/11/new:142:46: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  142 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
      |                                              ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:142:54: error: expected primary-expression before 'const'
  142 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
      |                                                      ^~~~~
/usr/include/c++/11/new:149:26: error: declaration of 'operator new' as non-function
  149 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t)
      |                          ^~~~~~~~
/usr/include/c++/11/new:149:44: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  149 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t)
      |                                            ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:149:68: error: expected primary-expression before ')' token
  149 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t)
      |                                                                    ^
/usr/include/c++/11/new:150:73: error: attributes after parenthesized initializer ignored [-fpermissive]
  150 |   __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
      |                                                                         ^
/usr/include/c++/11/new:151:26: error: declaration of 'operator new' as non-function
  151 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&)
      |                          ^~~~~~~~
/usr/include/c++/11/new:151:44: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  151 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&)
      |                                            ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:151:68: error: expected primary-expression before ',' token
  151 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&)
      |                                                                    ^
/usr/include/c++/11/new:151:70: error: expected primary-expression before 'const'
  151 | _GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&)
      |                                                                      ^~~~~
/usr/include/c++/11/new:157:26: error: declaration of 'operator new []' as non-function
  157 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t)
      |                          ^~~~~~~~
/usr/include/c++/11/new:157:46: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  157 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t)
      |                                              ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:157:70: error: expected primary-expression before ')' token
  157 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t)
      |                                                                      ^
/usr/include/c++/11/new:158:73: error: attributes after parenthesized initializer ignored [-fpermissive]
  158 |   __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
      |                                                                         ^
/usr/include/c++/11/new:159:26: error: declaration of 'operator new []' as non-function
  159 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&)
      |                          ^~~~~~~~
/usr/include/c++/11/new:159:46: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  159 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&)
      |                                              ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:159:70: error: expected primary-expression before ',' token
  159 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&)
      |                                                                      ^
/usr/include/c++/11/new:159:72: error: expected primary-expression before 'const'
  159 | _GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&)
      |                                                                        ^~~~~
/usr/include/c++/11/new:166:29: error: 'std::size_t' has not been declared
  166 | void operator delete(void*, std::size_t, std::align_val_t)
      |                             ^~~
/usr/include/c++/11/new:168:31: error: 'std::size_t' has not been declared
  168 | void operator delete[](void*, std::size_t, std::align_val_t)
      |                               ^~~
/usr/include/c++/11/new:174:33: error: declaration of 'operator new' as non-function
  174 | _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
      |                                 ^~~~~~~~
/usr/include/c++/11/new:174:51: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  174 | _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
      |                                                   ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:174:59: error: expected primary-expression before 'void'
  174 | _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
      |                                                           ^~~~
/usr/include/c++/11/new:176:33: error: declaration of 'operator new []' as non-function
  176 | _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
      |                                 ^~~~~~~~
/usr/include/c++/11/new:176:53: error: 'size_t' is not a member of 'std'; did you mean 'size_t'?
  176 | _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
      |                                                     ^~~~~~
In file included from /usr/include/stdlib.h:32,
                 from /usr/include/c++/11/bits/std_abs.h:38,
                 from /usr/include/c++/11/cmath:47,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h:209:23: note: 'size_t' declared here
  209 | typedef __SIZE_TYPE__ size_t;
      |                       ^~~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:82,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/new:176:61: error: expected primary-expression before 'void'
  176 | _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
      |                                                             ^~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/stl_iterator.h:658:31: error: 'ptrdiff_t' does not name a type
  658 |       using difference_type = ptrdiff_t;
      |                               ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:86:1: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   85 | # include <bits/stl_construct.h>
  +++ |+#include <cstddef>
   86 | #endif
/usr/include/c++/11/bits/stl_iterator.h:761:31: error: 'ptrdiff_t' does not name a type
  761 |       using difference_type = ptrdiff_t;
      |                               ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:761:31: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
/usr/include/c++/11/bits/stl_iterator.h:880:31: error: 'ptrdiff_t' does not name a type
  880 |       using difference_type = ptrdiff_t;
      |                               ^~~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:880:31: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/stl_algobase.h: In static member function 'static constexpr _Tp* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(const _Tp*, const _Tp*, _Tp*)':
/usr/include/c++/11/bits/stl_algobase.h:429:17: error: 'ptrdiff_t' does not name a type
  429 |           const ptrdiff_t _Num = __last - __first;
      |                 ^~~~~~~~~
/usr/include/c++/11/bits/stl_algobase.h:72:1: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   71 | #include <bits/predefined_ops.h>
  +++ |+#include <cstddef>
   72 | #if __cplusplus >= 201103L
/usr/include/c++/11/bits/stl_algobase.h:430:15: error: '_Num' was not declared in this scope
  430 |           if (_Num)
      |               ^~~~
/usr/include/c++/11/bits/stl_algobase.h:432:29: error: '_Num' was not declared in this scope
  432 |           return __result + _Num;
      |                             ^~~~
/usr/include/c++/11/bits/stl_algobase.h: In static member function 'static constexpr _Tp* std::__copy_move_backward<_IsMove, true, std::random_access_iterator_tag>::__copy_move_b(const _Tp*, const _Tp*, _Tp*)':
/usr/include/c++/11/bits/stl_algobase.h:740:17: error: 'ptrdiff_t' does not name a type
  740 |           const ptrdiff_t _Num = __last - __first;
      |                 ^~~~~~~~~
/usr/include/c++/11/bits/stl_algobase.h:740:17: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
/usr/include/c++/11/bits/stl_algobase.h:741:15: error: '_Num' was not declared in this scope
  741 |           if (_Num)
      |               ^~~~
/usr/include/c++/11/bits/stl_algobase.h:743:29: error: '_Num' was not declared in this scope
  743 |           return __result - _Num;
      |                             ^~~~
/usr/include/c++/11/bits/stl_algobase.h: At global scope:
/usr/include/c++/11/bits/stl_algobase.h:1349:16: error: 'ptrdiff_t' does not name a type
 1349 |         static ptrdiff_t
      |                ^~~~~~~~~
/usr/include/c++/11/bits/stl_algobase.h:1349:16: note: 'ptrdiff_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
In file included from /usr/include/c++/11/ios:40,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/char_traits.h:114:61: error: 'std::size_t' has not been declared
  114 |       compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
      |                                                             ^~~
/usr/include/c++/11/bits/char_traits.h:116:40: error: 'size_t' in namespace 'std' does not name a type; did you mean 'time_t'?
  116 |       static _GLIBCXX14_CONSTEXPR std::size_t
      |                                        ^~~~~~
      |                                        time_t
/usr/include/c++/11/bits/char_traits.h:120:34: error: 'std::size_t' has not been declared
  120 |       find(const char_type* __s, std::size_t __n, const char_type& __a);
      |                                  ^~~
/usr/include/c++/11/bits/char_traits.h:123:52: error: 'std::size_t' has not been declared
  123 |       move(char_type* __s1, const char_type* __s2, std::size_t __n);
      |                                                    ^~~
/usr/include/c++/11/bits/char_traits.h:126:52: error: 'std::size_t' has not been declared
  126 |       copy(char_type* __s1, const char_type* __s2, std::size_t __n);
      |                                                    ^~~
/usr/include/c++/11/bits/char_traits.h:129:30: error: 'std::size_t' has not been declared
  129 |       assign(char_type* __s, std::size_t __n, char_type __a);
      |                              ^~~
/usr/include/c++/11/bits/char_traits.h:155:59: error: 'std::size_t' has not been declared
  155 |     compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
      |                                                           ^~~
/usr/include/c++/11/bits/char_traits.h: In static member function 'static constexpr int __gnu_cxx::char_traits<_CharT>::compare(const char_type*, const char_type*, int)':
/usr/include/c++/11/bits/char_traits.h:157:17: error: 'size_t' is not a member of 'std'; did you mean 'time_t'?
  157 |       for (std::size_t __i = 0; __i < __n; ++__i)
      |                 ^~~~~~
      |                 time_t
/usr/include/c++/11/bits/char_traits.h:157:33: error: '__i' was not declared in this scope; did you mean '__n'?
  157 |       for (std::size_t __i = 0; __i < __n; ++__i)
      |                                 ^~~
      |                                 __n
/usr/include/c++/11/bits/char_traits.h: At global scope:
/usr/include/c++/11/bits/char_traits.h:166:31: error: 'size_t' in namespace 'std' does not name a type; did you mean 'time_t'?
  166 |     _GLIBCXX14_CONSTEXPR std::size_t
      |                               ^~~~~~
      |                               time_t
/usr/include/c++/11/bits/char_traits.h:179:32: error: 'std::size_t' has not been declared
  179 |     find(const char_type* __s, std::size_t __n, const char_type& __a)
      |                                ^~~
/usr/include/c++/11/bits/char_traits.h: In static member function 'static constexpr const char_type* __gnu_cxx::char_traits<_CharT>::find(const char_type*, int, const char_type&)':
/usr/include/c++/11/bits/char_traits.h:181:17: error: 'size_t' is not a member of 'std'; did you mean 'time_t'?
  181 |       for (std::size_t __i = 0; __i < __n; ++__i)
      |                 ^~~~~~
      |                 time_t
/usr/include/c++/11/bits/char_traits.h:181:33: error: '__i' was not declared in this scope; did you mean '__s'?
  181 |       for (std::size_t __i = 0; __i < __n; ++__i)
      |                                 ^~~
      |                                 __s
/usr/include/c++/11/bits/char_traits.h: At global scope:
/usr/include/c++/11/bits/char_traits.h:191:50: error: 'std::size_t' has not been declared
  191 |     move(char_type* __s1, const char_type* __s2, std::size_t __n)
      |                                                  ^~~
/usr/include/c++/11/bits/char_traits.h:241:50: error: 'std::size_t' has not been declared
  241 |     copy(char_type* __s1, const char_type* __s2, std::size_t __n)
      |                                                  ^~~
/usr/include/c++/11/bits/char_traits.h:252:28: error: 'std::size_t' has not been declared
  252 |     assign(char_type* __s, std::size_t __n, char_type __a)
      |                            ^~~
/usr/include/c++/11/bits/char_traits.h: In static member function 'static constexpr size_t std::char_traits<char>::length(const char_type*)':
/usr/include/c++/11/bits/char_traits.h:397:53: error: 'length' is not a member of '__gnu_cxx::char_traits<char>'
  397 |           return __gnu_cxx::char_traits<char_type>::length(__s);
      |                                                     ^~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/stl_algobase.h: In instantiation of 'static constexpr _OI std::__copy_move<false, false, std::random_access_iterator_tag>::__copy_m(_II, _II, _OI) [with _II = const char*; _OI = char*]':
/usr/include/c++/11/bits/stl_algobase.h:492:12:   required from 'constexpr _OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const char*; _OI = char*]'
/usr/include/c++/11/bits/stl_algobase.h:522:42:   required from 'constexpr _OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const char*; _OI = char*]'
/usr/include/c++/11/bits/stl_algobase.h:530:31:   required from 'constexpr _OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = const char*; _OI = char*]'
/usr/include/c++/11/bits/stl_algobase.h:620:7:   required from 'constexpr _OI std::copy(_II, _II, _OI) [with _II = const char*; _OI = char*]'
/usr/include/c++/11/bits/char_traits.h:244:7:   required from 'static constexpr __gnu_cxx::char_traits<_CharT>::char_type* __gnu_cxx::char_traits<_CharT>::copy(__gnu_cxx::char_traits<_CharT>::char_type*, const char_type*, int) [with _CharT = char; __gnu_cxx::char_traits<_CharT>::char_type = char]'
/usr/include/c++/11/bits/char_traits.h:204:4:   required from 'static constexpr __gnu_cxx::char_traits<_CharT>::char_type* __gnu_cxx::char_traits<_CharT>::move(__gnu_cxx::char_traits<_CharT>::char_type*, const char_type*, int) [with _CharT = char; __gnu_cxx::char_traits<_CharT>::char_type = char]'
/usr/include/c++/11/bits/char_traits.h:423:50:   required from here
/usr/include/c++/11/bits/stl_algobase.h:382:66: error: no type named 'difference_type' in 'struct std::iterator_traits<const char*>'
  382 |           typedef typename iterator_traits<_II>::difference_type _Distance;
      |                                                                  ^~~~~~~~~
In file included from /usr/include/c++/11/ios:40,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/char_traits.h: In static member function 'static constexpr size_t std::char_traits<wchar_t>::length(const char_type*)':
/usr/include/c++/11/bits/char_traits.h:521:53: error: 'length' is not a member of '__gnu_cxx::char_traits<wchar_t>'
  521 |           return __gnu_cxx::char_traits<char_type>::length(__s);
      |                                                     ^~~~~~
/usr/include/c++/11/bits/char_traits.h:523:22: error: call to non-'constexpr' function 'size_t wcslen(const wchar_t*)'
  523 |         return wcslen(__s);
      |                ~~~~~~^~~~~
In file included from /usr/include/c++/11/cwchar:44,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:50,
                 from fish2.cpp:3:
/usr/include/wchar.h:223:15: note: 'size_t wcslen(const wchar_t*)' declared here
  223 | extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__;
      |               ^~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from fish2.cpp:3:
/usr/include/c++/11/bits/stl_algobase.h: In instantiation of 'static constexpr _OI std::__copy_move<false, false, std::random_access_iterator_tag>::__copy_m(_II, _II, _OI) [with _II = const wchar_t*; _OI = wchar_t*]':
/usr/include/c++/11/bits/stl_algobase.h:492:12:   required from 'constexpr _OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = const wchar_t*; _OI = wchar_t*]'
/usr/include/c++/11/bits/stl_algobase.h:522:42:   required from 'constexpr _OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = false; _II = const wchar_t*; _OI = wchar_t*]'
/usr/include/c++/11/bits/stl_algobase.h:530:31:   required from 'constexpr _OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = const wchar_t*; _OI = wchar_t*]'
/usr/include/c++/11/bits/stl_algobase.h:620:7:   required from 'constexpr _OI std::copy(_II, _II, _OI) [with _II = const wchar_t*; _OI = wchar_t*]'
/usr/include/c++/11/bits/char_traits.h:244:7:   required from 'static constexpr __gnu_cxx::char_traits<_Cha