Submission #1177613

#TimeUsernameProblemLanguageResultExecution timeMemory
1177613drakozsHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
1078 ms241164 KiB
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("Ofast") 
#pragma GCC optimize("unroll-loops") 
#pragma GCC target("avx,avx2,fma")
using namespace __gnu_pbds;
#define ordered_set tree<pair<int, int>, null_type,less<pair<int, int>>, rb_tree_tag,tree_order_statistics_node_update>
#define ll long long
#define MOD 1000000007
#define MAXN 2e5
#define SIZE 20
#define pb push_back

using namespace std;

ll power(ll a, ll b){
	if (b == 0) return 1;
	ll res = power(a, b / 2);
//	if (b % 2 == 1) return res * res % MOD * a % MOD;
//	return res * res % MOD;
	
	if (b % 2 == 1) return res * res * a;
	return res * res;
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	int n, m;
	cin >> n >> m;
	vector<int> nums(n + 1);
	for (int i = 1; i <= n; i++) cin >> nums[i];
	vector<vector<int>> minArr(n + 1, vector<int>(SIZE)), maxArr(n + 1, vector<int>(SIZE));
	for (int i = 1; i <= n; i++){
		minArr[i][0] = nums[i];
		maxArr[i][0] = nums[i];
	}
//	cout << "AAA\n";
	for (int j = 1; j < SIZE; j++){
		for (int i = 1; i <= n; i++){
			int len = i + power(2, j) - 1;
			if (len > n) break;
			int pos = i + power(2, j - 1);
//			cout << i << ", " << pos << "\n";
			minArr[i][j] = min(minArr[i][j - 1], minArr[pos][j - 1]);
			maxArr[i][j] = max(maxArr[i][j - 1], maxArr[pos][j - 1]);
		}
	}
//	cout << "AAA\n";
//	for (int i = 1; i <= n; i++){
//		cout << minArr[i][1] << "\n";
//	}
	while(m--){
		int l, r, d;
		cin >> l >> r >> d;
		int amount = log2(r - l + 1);
		int minNum = min(minArr[l][amount], minArr[r - power(2, amount) + 1][amount]);
		int maxNum = max(maxArr[l][amount], maxArr[r - power(2, amount) + 1][amount]);
//		cout << maxNum << ", " << minNum << " aaa\n";
		if (maxNum + minNum <= d) cout << "1\n";
		else cout << "0\n";
	}
	
	
	return 0;
}
#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...