#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000006],rmx[30][1000006],vt[30][1000006];
void buildd()
{
for(int i=1;i<=n;i++)
{
rmx[0][i]=a[i];
vt[0][i]=i;
}
for(int i=1;i<=21;i++)
{
for(int j=1;j<=n-(1<<i)+1;j++)
{
if(rmx[i-1][j]>=rmx[i-1][j+(1<<(i-1))])
{
rmx[i][j]=rmx[i-1][j];
vt[i][j]=vt[i-1][j];
}
else
{
rmx[i][j]=rmx[i-1][j+(1<<(i-1))];
vt[i][j]=vt[i-1][j+(1<<(i-1))];
}
}
}
}
pair<int,int> getmx(long long l,long long r)
{
long long k=__lg(r-l+1);
if(rmx[k][l]>=rmx[k][r-(1<<k)+1])
{
return {rmx[k][l],vt[k][l]};
}
else return {rmx[k][r-(1<<k)+1],vt[k][r-(1<<k)+1]};
}
long long get(long long l,long long r,long long w)
{
if(l==r)
{
if(a[l]<w) return a[l];
else return -1;
}
if(getmx(l,r).first<w) return w;
long long mid=(l+r)/2;
return max(get(l,mid,w),get(mid+1,r,w));
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen(".inp","r",stdin);
// freopen(".out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
buildd();
while(m--)
{
long long l,r,k;
cin>>l>>r>>k;
while(r>=l&&getmx(l,r).first==a[r])
{
r--;
}
if(r<l) cout<<1<<endl;
else
{
bool kt=true;
for(int i=r-1;i>=l;i--)
{
// pair<long long,long long> p=getmx(i,r);
long long h=get(i,r,a[i]);
// cout<<a[i]<<' '<<h<<endl;
if(a[i]+h<=k)
{
continue;
}
else
{
kt=false;
}
}
cout<<kt<<endl;
}
}
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
6 ms |
604 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
6 ms |
604 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
161 ms |
262144 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
3032 ms |
25988 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
6 ms |
604 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
6 ms |
604 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |