跑不了求助
查看原帖
跑不了求助
1210321
zhangzhixu000001楼主2024/5/9 21:57
#include <bits/stdc++.h>
using namespace std;
#define io ios::sync_with_stdio(0)
/*inline long long read()
{
	long long x=0;char ch;
	while (1)
	{
		ch=getchar();
		if (ch==' '&&ch=='\n'&&ch==EOF) break;
		else if (ch=='-') x*=-1;
		else if (ch>='0'&&ch<='9') x=x*10+ch-48;
	}
	return x;
}*/
const int maxn=5e5+5;
struct tree{
	long long l,r;
	long long minn;
}tr[maxn<<2];
long long num[maxn];
inline long long ls(long long n){return n<<1;}
inline long long rs(long long n){return n<<1|1;}
inline void up(long long n)
{
	tr[n].minn=min(tr[ls(n)].minn,tr[rs(n)].minn);
	return;
}
inline void build(long long l,long long r,long long p)
{
	tr[p].l=l;tr[p].r=r;
	if (l==r)
	{
		tr[p].minn=num[l];
		return;
	}
	long long mid=(l+r)>>1;
	build(l,mid,ls(p));
	build(mid+1,r,rs(p));
	up(p);
}
/*inline void tagadd(long long d,long long l,long long r,long long p)
{
	tr[p].tag+=d;
	tr[p].sum+=d*(tr[p].r-tr[p].l+1);	
}
inline void pushdown(long long p,long long l,long long r)
{
	if (tr[p].tag)
	{
		int mid=(l+r)>>1;
		tagadd(tr[p].tag,l,mid,ls(p));
		tagadd(tr[p].tag,mid+1,r,rs(p));
		tr[p].tag=0;
	}
 }*/
inline long long query(long long l,long long r,long long p)
{
 	if (l<=tr[p].l&&tr[p].r<=r) return tr[p].minn;
	//pushdown(p,l,r);
	long long tot=1e9;
	if (tr[ls(p)].r>=l) tot=min(tot,query(l,r,ls(p)));
	if (tr[rs(p)].l<=r) tot=min(tot,query(l,r,rs(p)));
	return tot; 
} 
/*inline void update(long long l,long long r,long long p,long long num)
{
	if (tr[p].l>=l&&tr[p].r<=r) 
	{
		tagadd(num,tr[p].l,tr[p].r,p);
		return;
	}
	pushdown(p,tr[p].l,tr[p].r);
	if(tr[ls(p)].r>=l) update(l,r,ls(p),num);
	if(tr[rs(p)].l<=r) update(l,r,rs(p),num);
	up(p);
}*/

int main() {
	io;
	long long m,n,l[maxn],r[maxn];
	cin>>m>>n;
	for (long long i=1;i<=m;i++) cin>>num[i];
	for (long long i=1;i<=n;i++)
	{
		cin>>l[i]>>r[i];
	}
	for (long long i=1;i<=n;i++) cout<<query(l[i],r[i],1)<<' ';
	return 0;
}
2024/5/9 21:57
加载中...