#include <bits/stdc++.h>
using namespace std;
#define io \
ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
typedef long long ll;
ll bp(ll n,ll m){
if(m == 0){
return 1;
}
if(m == 1){
return n;
}
if(m%2==0){
return bp(n*n,m/2);
}
return n*bp(n,m-1);
}
const int N = 1e6 + 545, M = 33, inf = 1e9 + 99;
const ll inff = 1e12;
struct segtree {
ll tree[N * 4];
int get(int v,int l, int r, int ml , int mr) {
if(l > mr || r < ml || l > r) {
return 0;
}
if(ml <= l && r <= mr) {
return tree[v];
}
int mid = (l + r)/2;
return max(get(v*2 , l, mid , ml, mr), get(v*2 + 1 , mid + 1, r , ml, mr));
}
void update(int v,int l,int r,int pos ,ll val) {
if(l > r) {
return;
}
if(l == r) {
tree[v] = max(val , tree[v]);
return;
}
int mid = (l + r)/2;
if(pos <= mid) {
update(v*2 , l , mid , pos , mid);
}
else {
update(v*2 + 1, mid + 1 , r , pos , mid);
}
tree[v] = max(tree[v * 2], tree[v * 2 + 1]);
}
};
segtree S;
int main() {
int n, q;
cin >> n >> q;
vector<pair<pair<ll , ll > , ll>> qu[n + 1];
ll a[n + 1];
vector<ll> ans(q + 1 , 0);
for(int i=1;i<=n;i++) {
cin >> a[i];
}
for(int i=1;i<=q;i++) {
ll l, r, k;
cin >> l >> r >> k;
qu[r].push_back({{l, k}, i});
}
vector<ll> v;
for(ll r=1;r<=n;r++) {
while(!v.empty() && a[v.back()] <= a[r]) {
v.pop_back();
}
if(!v.empty()) {
S.update(1 ,1 , n , v.back(), a[r] + a[v.back()]);
}
for(auto &i : qu[r]) {
ll l = i.first.first, k = i.first.second, ind = i.second;
ll tmp = S.get(1 , 1 , n , l, r);
if(tmp <= k){
ans[ind] = 1;
}
}
v.push_back(r);
}
for(int i=1;i<=q;i++) {
cout << ans[i] << endl;
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3050 ms |
106372 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
240 ms |
11540 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |