Submission #1127822

#TimeUsernameProblemLanguageResultExecution timeMemory
1127822kirakosyanHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
3097 ms165024 KiB
#include<algorithm>
#include<iostream>
#include<vector>
#include<string>
#include<random>
#include<cmath>
#include<stack>
#include<map>
#include <iomanip>
#include <queue>
#include <set>
using namespace std;
using ll = long long;
using ull = unsigned long long;
ll mod = 1e9 + 7;
ll pv(ll a, ll b) {
	if (b == 0)return 1;
	ll res = (pv(a, b / 2));
	if (b % 2) {
		return (((res * res) % mod) * (a % mod)) % mod;
	}
	else {
		return (res * res) % mod;
	}
}
ll gcd(ll a, ll b) {
	while (b) {
		a %= b;
		swap(a, b);
	}
	return a;
}
ll n,s=1;
vector<ll> v;
map<int,int>seg;
void build(ll l, ll r, ll u) {
	if(l == r) {
		if(l < n) seg[u] = v[l];
		return;
	}
	ll m = (l + r) / 2;
	build(l, m, 2 * u + 1), build(m + 1, r, 2 * u + 2);
	seg[u] = max(seg[2 * u + 1],seg[2 * u + 2]);
}

ll get(ll l, ll r, ll lx, ll rx, ll u) {
	if(lx >= l && rx <= r) return seg[u];
	if(lx > r || rx < l) return 0;
	ll m = (lx + rx) / 2;
	ll a = get(l, r, lx, m, 2 * u + 1), b = get(l, r, m + 1, rx, 2 * u + 2);
	return max(a,b) ;
}
void modify(ll l, ll r, ll u, ll i, ll val) {
	if(l == r) {
		seg[u] = val;
		return;
	}
	ll m = (l + r) / 2;
	if(i <= m) modify(l, m, 2 * u + 1, i, val);
	else modify(m + 1, r, 2 * u + 2, i, val);
	seg[u] = min(seg[2 * u + 1],seg[2 * u + 2]);
}
void solve() {
	ll q;
	cin >> n >> q;
	v=vector<ll>(n);
	ll ara=0;
	for(ll i=0; i<n; i++) {
		cin >> v[i];
		ara=max(ara,v[i]);
	}
	while(s<=ara)s<<=1;
	while(q--) {
		ll l,r,k;
		cin >> l >> r >> k;
		--l,--r;
		ll mx=0;
		seg.clear();
		for(int i=r; i>=l; i--) {
			int aper=get(0,v[i],0,s-1,0);
			mx=max(mx,aper+v[i]);
			modify(0,s-1,0,v[i],v[i]);
		}
		if(mx<=k)cout<<1<<endl;
		else cout<<0<<endl;
	}

}

signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	ll _ = 1;
// 	cin >> _;
	while (_--) {
		solve();
	}
}
#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...