Submission #1273397

#TimeUsernameProblemLanguageResultExecution timeMemory
1273397nhq0914Examination (JOI19_examination)C++17
Compilation error
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;
}

Compilation message (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; }
      |                ~~~~~~^~~~~~~