제출 #1267842

#제출 시각아이디문제언어결과실행 시간메모리
1267842usukhbaatarHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;

#define ff first
#define ss second
#define mp make_pair
#define pb push_back
#define heap priority_queue
#define endl '\n'
#define maxx(a, b) a = max(a, b)
#define minn(a, b) a = min(a, b)
#define all(v) v.begin(), v.end()
#define rep(i, n) for (int i = 0; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL);
#define int long long

typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<vii> vvii;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<string> vs;
template <class T> using indexed_set = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>;

const int mod = 1e9 + 7;
const int oo ((((1LL << 62) - 1) << 1) + 1);
const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};

int n, q;
vi a;
vii b;
vector<array<int, 4>> queries;

pii meta(int i) { return {(i << 1) + 1, (i + 1) << 1}; }
tuple<int, int, int> meta(int i, int l, int r) {
	pii m = meta(i); return { m.ff, m.ss, (l + r) / 2 };
}

vi val;

void update(int i, int tl, int tr, int k, int t) {
	if (tl == tr) { val[i] = t; return; }
	auto [x, y, tm] = meta(i, tl,  tr);
	if (k <= tm) update(x, tl, tm, k, t);
	else update(y, tm + 1, tr, k, t);
	val[i] = max(val[x], val[y]);
}

int query(int i, int tl, int tr, int l, int r) {
	if (tl == l && r == tr) return val[i];
	auto [x, y, tm] = meta(i, tl, tr);
	if (r <= tm) return query(x, tl, tm, l, r);
	else if (tm + 1 <= l) return query(y, tm + 1, tr, l, r);
	return max(query(x, tl, tm, l, tm), query(y, tm + 1, tr, tm + 1, r));
}


int32_t main() {
	fastio;
	cin >> n >> q;
	a.resize(n + 1); a[0] = 1e10;
	b.resize(n + 1);
	vi stk = {0};
	rep1(i, n) {
		cin >> a[i];
		while(a[stk.back()] <= a[i]) stk.pop_back();
		if (stk.size() > 1) {
			queries.pb({-a[i] - a[stk.back()], 1, i, stk.back()});
			b[i] = {a[i] + a[stk.back()], stl.back()};
		}
		stk.pb(i);
	}
	vi ans(q);
	vi l(q), r(q);
	rep(i, q) {
		int k;
		cin >> l[i] >> r[i] >> k;
		for (int j = l[i]; j <= r[i]; j++) {
			if (b[j].ff > k && b[j].ss >= l[i]) {
				ans[i] = 1;
				break;
			}
		}
		queries.pb({-k, 0, i, 0});
	}
	// sort(all(queries));
	// val.resize(4 * n);

	// for (auto &qry : queries) {
	// 	//cout << qry[0] << ' ' << qry[1] << ' ' << qry[2] << ' ' << qry[3] << endl;
	// 	if (qry[1] == 1) update(0, 0, n - 1, qry[2] - 1, qry[3]);
	// 	else {
	// 		int id = qry[2];
	// 		ans[id] = (query(0, 0, n - 1, l[id] - 1, r[id] - 1) >= l[id] ? 0 : 1);
	// 	}
	// }
	for (int x : ans) cout << x << endl;
	return 0;
}

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

sortbooks.cpp: In function 'int32_t main()':
sortbooks.cpp:75:55: error: 'stl' was not declared in this scope; did you mean 'stk'?
   75 |                         b[i] = {a[i] + a[stk.back()], stl.back()};
      |                                                       ^~~
      |                                                       stk
sortbooks.cpp:75:65: error: no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<std::pair<long long int, long long int> >, std::pair<long long int, long long int> >::value_type' {aka 'std::pair<long long int, long long int>'} and '<brace-enclosed initializer list>')
   75 |                         b[i] = {a[i] + a[stk.back()], stl.back()};
      |                                                                 ^
In file included from /usr/include/c++/13/bits/stl_algobase.h:64,
                 from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from sortbooks.cpp:1:
/usr/include/c++/13/bits/stl_pair.h:439:9: note: candidate: 'template<class _U1, class _U2> constexpr std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(const std::pair<_U1, _U2>&) requires  _S_assignable<const _U1&, const _U2&>() [with _U2 = _U1; _T1 = long long int; _T2 = long long int]'
  439 |         operator=(const pair<_U1, _U2>& __p)
      |         ^~~~~~~~
/usr/include/c++/13/bits/stl_pair.h:439:9: note:   template argument deduction/substitution failed:
sortbooks.cpp:75:65: note:   couldn't deduce template parameter '_U1'
   75 |                         b[i] = {a[i] + a[stk.back()], stl.back()};
      |                                                                 ^
/usr/include/c++/13/bits/stl_pair.h:451:9: note: candidate: 'template<class _U1, class _U2> constexpr std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(std::pair<_U1, _U2>&&) requires  _S_assignable<_U1, _U2>() [with _U2 = _U1; _T1 = long long int; _T2 = long long int]'
  451 |         operator=(pair<_U1, _U2>&& __p)
      |         ^~~~~~~~
/usr/include/c++/13/bits/stl_pair.h:451:9: note:   template argument deduction/substitution failed:
sortbooks.cpp:75:65: note:   couldn't deduce template parameter '_U1'
   75 |                         b[i] = {a[i] + a[stk.back()], stl.back()};
      |                                                                 ^
/usr/include/c++/13/bits/stl_pair.h:416:7: note: candidate: 'constexpr std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(const std::pair<_T1, _T2>&) requires  _S_assignable<const _T1&, const _T2&>() [with _T1 = long long int; _T2 = long long int]'
  416 |       operator=(const pair& __p)
      |       ^~~~~~~~
/usr/include/c++/13/bits/stl_pair.h:416:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const std::pair<long long int, long long int>&'
  416 |       operator=(const pair& __p)
      |                 ~~~~~~~~~~~~^~~
/usr/include/c++/13/bits/stl_pair.h:427:7: note: candidate: 'constexpr std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(std::pair<_T1, _T2>&&) requires  _S_assignable<_T1, _T2>() [with _T1 = long long int; _T2 = long long int]'
  427 |       operator=(pair&& __p)
      |       ^~~~~~~~
/usr/include/c++/13/bits/stl_pair.h:427:24: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::pair<long long int, long long int>&&'
  427 |       operator=(pair&& __p)
      |                 ~~~~~~~^~~