제출 #342170

#제출 시각아이디문제언어결과실행 시간메모리
342170antin_kuntinHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
0 / 100
962 ms58204 KiB
#include <bits/stdc++.h>

using namespace std;

#define st first
#define nd second
#define pb push_back
#define int long long int
#define endl '\n'
#define MOD (int)(1e9 + 7)
#define all(x) x.begin(), x.end()
#define mid start+(end-start)/2
#define debug(x) cerr << #x << " = " << x << endl
#define binary(x) cerr << #x << " = " << bitset<8>(x) << endl
#define N (int)(1e6)+5

int n, m, a, b, c;
vector<int> v;
vector<pair<pair<int, int>, pair<int, int> > > q;
int tree[4*N];
int cevs[N];

void update(int wai, int start, int end, int indis, int val){
	if(start > indis || end < indis) return;
	if(start == end){
		tree[wai] = max(tree[wai], val);
		return;
	}
	update(wai*2, start, mid, indis, val), update(wai*2+1, mid+1, end, indis, val);
	tree[wai] = max(tree[wai*2], tree[wai*2+1]);
}

int query(int wai, int start, int end, int l, int r){
	if(start > r || end < l) return 0;
	if(start >= l && end <= r) return tree[wai];
	return max(query(wai*2, start, mid, l, r), query(wai*2+1, mid+1, end, l, r));
}

int32_t main(){
	ios_base::sync_with_stdio(false);cin.tie(0); cout.tie(0);
	cin >> n >> m;
	for(int i = 0; i < n; i++){
		cin >> a;
		v.pb(a);
	}
	for(int i = 0; i < m; i++){
		cin >> a >> b >> c;
		q.pb({{a,b}, {c, i}});
	}
	sort(all(q));
	stack<int> st;
	int las = m-1;
	for(int i = n-1; i >= 0; i--){
		while(!st.empty() && v[i] > st.top()){
			update(1, 1, n, i+1, v[i]+st.top());
			// debug(i+1);
			// debug(v[i]+st.top());
			st.pop();
		}
		st.push(v[i]);
		if(q[las].st.st == i){
			// debug(query(1, 1, n, i, q[las].st.nd));
			if(query(1, 1, n, i, q[las].st.nd) <= q[las].nd.st) cevs[q[las].nd.nd] = 1;
			las--;
		}
	}
	for(int i = 0; i < m; i++) cout << cevs[i] << endl;
}
#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...