제출 #1273397

#제출 시각아이디문제언어결과실행 시간메모리
1273397nhq0914Examination (JOI19_examination)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define vi vector <int> #define pb push_back using namespace std; using i64 = long long; using u64 = unsigned long long; template <typename T> using pq_min = priority_queue <T, vector <T>, greater <T>>; const int maxn = 1e5 + 123; struct info{ int a, b, c, i; info (int _a = 0, int _b = 0, int _c = 0, int _i = -1){ a = _a; b = _b; c = _c; i = _i; }f bool operator < (const info &x) const{ if(c == x.c) return i == -1; return c > x.c; } }; struct sub_info{ //khử z int a, b, i; }; struct BIT{ int n; vi fwt; BIT(const int &n){ this -> n = n + 1; fwt.resize(n + 5); } void update(int i, int v){ for(; i <= n; i += i & -i) fwt[i] += v; } int get(int i){ int res = 0; for(; i; i -= i & -i) res += fwt[i]; return res; } } bit(2 * maxn); int n, q; int ans[maxn]; vector <info> infor; vi cpr; inline int getID(const int &x){ return lower_bound(all(cpr), x, greater <int> ()) - cpr.begin() + 1; } void dnc(int l, int r){ if(l == r) return; int mid = (l + r) / 2; vector <pair <int, int>> student; for(int i = l; i <= mid; ++i) if(infor[i].i == -1) student.pb({infor[i].a, infor[i].b}); vector <sub_info> professor; for(int i = mid + 1; i <= r; ++i) if(infor[i].i != -1) professor.pb({infor[i].a, infor[i].b, infor[i].i}); sort(all(student), [&] (const pair <int, int> &a, const pair <int, int> &b){ return a.second > b.second; }); sort(all(professor), [&] (const sub_info &a, const sub_info &b){ return a.b > b.b; }); int pt = 0; for(auto &x : professor){ while(pt < (int)student.size() && student[pt].second >= x.b){ bit.update(student[pt].first, 1); ++pt; } ans[x.i] += bit.get(x.a); } while(pt--) bit.update(student[pt].first, -1); dnc(l, mid); dnc(mid + 1, r); } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> q; infor.resize(n + q); for(int i = 0; i < n; ++i){ auto &x = infor[i]; cin >> x.a >> x.b; x.c = x.a + x.b; cpr.pb(x.a); } for(int i = 0; i < q; ++i){ auto &x = infor[n + i]; cin >> x.a >> x.b >> x.c; x.i = i; cpr.pb(x.a); } sort(all(infor)); sort(rall(cpr)); cpr.erase(unique(all(cpr)), cpr.end()); for(auto &x : infor) x.a = getID(x.a); dnc(0, n + q - 1); for(int i = 0; i < q; ++i) cout << ans[i] << '\n'; return 0; }

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

examination.cpp:24:10: error: 'f' does not name a type
   24 |         }f
      |          ^
In file included from /usr/include/c++/13/bits/stl_algobase.h:71,
                 from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from examination.cpp:1:
/usr/include/c++/13/bits/predefined_ops.h: In instantiation of 'constexpr bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<info*, std::vector<info> >; _Iterator2 = __gnu_cxx::__normal_iterator<info*, std::vector<info> >]':
/usr/include/c++/13/bits/stl_algo.h:1819:14:   required from 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1859:25:   required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1950:31:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:4861:18:   required from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<info*, vector<info> >]'
examination.cpp:126:6:   required from here
/usr/include/c++/13/bits/predefined_ops.h:45:23: error: no match for 'operator<' (operand types are 'info' and 'info')
   45 |       { return *__it1 < *__it2; }
      |                ~~~~~~~^~~~~~~~
In file included from /usr/include/c++/13/bits/stl_algobase.h:67:
/usr/include/c++/13/bits/stl_iterator.h:1250:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)'
 1250 |     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1250:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/predefined_ops.h:45:23: note:   'info' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>'
   45 |       { return *__it1 < *__it2; }
      |                ~~~~~~~^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1258:5: note: candidate: 'template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)'
 1258 |     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1258:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/predefined_ops.h:45:23: note:   'info' is not derived from 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>'
   45 |       { return *__it1 < *__it2; }
      |                ~~~~~~~^~~~~~~~
/usr/include/c++/13/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Val_less_iter::operator()(_Value&, _Iterator) const [with _Value = info; _Iterator = __gnu_cxx::__normal_iterator<info*, std::vector<info> >]':
/usr/include/c++/13/bits/stl_algo.h:1799:20:   required from 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Val_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1827:36:   required from 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1859:25:   required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1950:31:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:4861:18:   required from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<info*, vector<info> >]'
examination.cpp:126:6:   required from here
/usr/include/c++/13/bits/predefined_ops.h:98:22: error: no match for 'operator<' (operand types are 'info' and 'info')
   98 |       { return __val < *__it; }
      |                ~~~~~~^~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1250:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)'
 1250 |     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1250:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/predefined_ops.h:98:22: note:   'info' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>'
   98 |       { return __val < *__it; }
      |                ~~~~~~^~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1258:5: note: candidate: 'template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)'
 1258 |     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1258:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/predefined_ops.h:98:22: note:   'info' is not derived from 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>'
   98 |       { return __val < *__it; }
      |                ~~~~~~^~~~~~~
/usr/include/c++/13/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_less_val::operator()(_Iterator, _Value&) const [with _Iterator = __gnu_cxx::__normal_iterator<info*, std::vector<info> >; _Value = info]':
/usr/include/c++/13/bits/stl_heap.h:140:48:   required from 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Distance = long int; _Tp = info; _Compare = __gnu_cxx::__ops::_Iter_less_val]'
/usr/include/c++/13/bits/stl_heap.h:247:23:   required from 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Distance = long int; _Tp = info; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_heap.h:356:22:   required from 'void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1635:23:   required from 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1910:25:   required from 'void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1926:27:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:1947:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<info*, vector<info> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]'
/usr/include/c++/13/bits/stl_algo.h:4861:18:   required from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<info*, vector<info> >]'
examination.cpp:126:6:   required from here
/usr/include/c++/13/bits/predefined_ops.h:69:22: error: no match for 'operator<' (operand types are 'info' and 'info')
   69 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1250:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)'
 1250 |     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1250:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/predefined_ops.h:69:22: note:   'info' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>'
   69 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1258:5: note: candidate: 'template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)'
 1258 |     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1258:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/predefined_ops.h:69:22: note:   'info' is not derived from 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>'
   69 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~