Submission #1335915

#TimeUsernameProblemLanguageResultExecution timeMemory
1335915gelastropodHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
13 / 100
575 ms33948 KiB
#pragma GCC optimize("O3,inline")
#include <bits/stdc++.h>
using namespace std;
#define int long long

vector<int> W, die;

struct node {
	int s, e, m, v;
	node* l, * r;

	node(int _s, int _e) : s(_s), e(_e), m((_s + _e) / 2) {
		if (s == e) v = W[s];
		else {
			l = new node(s, m), r = new node(m + 1, e);
			v = min(l->v, r->v);
		}
	}

	int qry(int a, int b) {
		if (b < s || a > e) return INT_MAX;
		if (a <= s && b >= e) return v;
		return min(l->qry(a, b), r->qry(a, b));
	}
} *root;

signed main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int N, M, a, b, c; cin >> N >> M;
	vector<pair<int, int>> vals;
	for (int i = 0; i < N; i++) {
		cin >> a;
		W.push_back(a);
		if (i > 0 && W[i] < W[i - 1]) die.push_back(i - 1);
		vals.push_back({ a, i });
	}
	for (int i = 0; i < M; i++) {
		cin >> a >> b >> c; a--, b--;
		if (lower_bound(die.begin(), die.end(), a) == lower_bound(die.begin(), die.end(), b)) 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...