제출 #1343869

#제출 시각아이디문제언어결과실행 시간메모리
1343869nicolo_010Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
13 / 100
840 ms23808 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;

struct SegTree {
	vector<int> tree;
	SegTree(int n) {
		tree.assign(4*n, INT_MIN);
	}
	void query(int p, int l, int r, int i, int x) {
		if (l>i||r<i) return;
		if (l==r) {
			tree[p] = x;
			return;
		}
		int m = (l+r)/2;
		query(2*p, l, m, i, x);
		query(2*p+1, m+1, r, i, x);
		tree[p] = max(tree[2*p], tree[2*p+1]);
	}
	int rmq(int p, int l, int r, int i, int j) {
		if (i>j) return -1;
		if (l>j || r<i) return -1;
		if (i<=l && r<=j) return tree[p];
		int m = (l+r)/2;
		return max(rmq(2*p, l, m, i, j), rmq(2*p+1, m+1, r, i, j));
	}
};

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n, m; cin >> n >> m;
	vector<int> a(n);
	for (int i=0; i<n; i++) {
		cin >> a[i];
	}
	SegTree st(n);
	a.push_back(2e9);
	for (int i=0; i<n; i++) {
		st.query(1, 0, n-1, i, a[i]-a[i+1]);
	}
	while (m--) {
		int l, r, k; cin >> l >> r >> k;
		l--; r--;
		int mx = st.rmq(1, 0, n-1, l, r-1);
		if (mx <= 0) {
			cout << 1 << "\n";
		}
		else cout << 0 << "\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...