求助P1816,第九个点错QAQ
  • 板块P1816 忠诚
  • 楼主qyzyq
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/11/16 17:21
  • 上次更新2023/11/4 00:24:37
查看原帖
求助P1816,第九个点错QAQ
50506
qyzyq楼主2021/11/16 17:21
#include<bits/stdc++.h>
#define int long long
using namespace std;
int m,n,a[200010],tree[800040];
void BT(int wz,int l,int r)
{
	if(l==r){tree[wz]=a[l];return ;}
	int mid=(l+r)/2;
	BT(wz*2,l,mid);
	BT(wz*2+1,mid+1,r);
	tree[wz]=min(tree[wz*2],tree[wz*2+1]);
}
int f(int wz,int l,int r,int le,int ri)
{
	if(le<=l&&ri>=r) return tree[wz];
	int mid=(l+r)/2;
	int ans=1145140;
	if(le<=mid) ans=min(ans,f(wz*2,l,mid,le,ri));
	if(ri>mid) ans=min(ans,f(wz*2+1,mid+1,r,le,ri));
	return ans;
}
signed main()
{
	cin>>m>>n;
	for(int i=1;i<=m;i++)
	cin>>a[i];
	BT(1,1,n);
	int le1,ri1;
	for(int i=1;i<=n;i++)
	{
		cin>>le1>>ri1;
		cout<<f(1,1,n,le1,ri1)<<endl;
	}
	return 0;
}
2021/11/16 17:21
加载中...