社区讨论
求调刚才CF的D。
学术版参与者 6已保存回复 16
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 16 条
- 当前快照
- 1 份
- 快照标识符
- @lo8i42sg
- 此快照首次捕获于
- 2023/10/27 18:59 2 年前
- 此快照最后确认于
- 2023/10/27 18:59 2 年前
CPP
#include<bits/stdc++.h>
#define int long long
#define maxn 200005
using namespace std;
int t,n,m,q,a[maxn],f[maxn],g[maxn],minn[maxn*4];
void pushup(int now)
{
minn[now]=min(minn[now*2],minn[now*2+1]);
return;
}
void build(int now,int l,int r)
{
if(l==r)
{
minn[now]=a[l];
return;
}
int mid=l+r>>1;
build(now*2,l,mid);
build(now*2+1,mid+1,r);
pushup(now);
return;
}
int query(int now,int l,int r,int ql,int qr)
{
if(r<ql||l>qr) return 1e18;
if(l>=ql&&r<=qr) return minn[now];
int res=1e18,mid=l+r>>1;
if(ql<=mid) res=min(res,query(now*2,l,mid,ql,qr));
if(qr>mid) res=min(res,query(now*2+1,mid+1,r,ql,qr));
return res;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i];
a[i]=n-a[i]+1;
}
build(1,1,m);
cin>>q;
while(q--)
{
int x,y,xx,yy,k;
cin>>x>>y>>xx>>yy>>k;
if(y>yy) swap(y,yy);
if((abs(xx-x)%k!=0)||((yy-y)%k!=0))
{
cout<<"NO"<<endl;
continue;
}
else if((abs(xx-x)%k==0)&&yy-y<=1)
{
cout<<"YES"<<endl;
continue;
}
else
{
int maxx=query(1,1,m,y+1,yy-1)-1;
if(x%k==0) x=k;
else x=x%k;
if(x<=maxx)
{
cout<<"YES"<<endl;
}
else cout<<"NO"<<endl;
}
}
return 0;
}
回复
共 16 条回复,欢迎继续交流。
正在加载回复...