#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;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 0;
}
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<<"\n";
else
{
pair<long long,long long> p=getmx(l,r);
long long h=get(p.second,r,p.first);
if(p.first+h<=k)
{
cout<<1<<"\n";
}
else cout<<0<<"\n";
}
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
604 KB |
Output is correct |
2 |
Correct |
0 ms |
604 KB |
Output is correct |
3 |
Incorrect |
1 ms |
860 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
604 KB |
Output is correct |
2 |
Correct |
0 ms |
604 KB |
Output is correct |
3 |
Incorrect |
1 ms |
860 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
160 ms |
262144 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
727 ms |
37900 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
604 KB |
Output is correct |
2 |
Correct |
0 ms |
604 KB |
Output is correct |
3 |
Incorrect |
1 ms |
860 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
604 KB |
Output is correct |
2 |
Correct |
0 ms |
604 KB |
Output is correct |
3 |
Incorrect |
1 ms |
860 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |