求救 请大佬帮忙找找毛病
  • 板块P1816 忠诚
  • 楼主felixabc
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/24 00:01
  • 上次更新2024/1/24 10:34:00
查看原帖
求救 请大佬帮忙找找毛病
905999
felixabc楼主2024/1/24 00:01
#include<bits/stdc++.h>
using namespace std;
long long n,m,b,ans,mid;
long long c[500005];
long long a[500005];
long long xi[500005];
long long yi[500005];
int build(int l,int r,int s){
	if(l==r){
		a[s]=c[l];
		return 0;
	}
	mid=(l+r)/2;
	build(l,mid,s*2);
	mid=(l+r)/2;
	build(mid+1,r,s*2+1);
	a[s]=min(a[s*2],a[s*2+1]);
}
int find(int x,int y,int l,int r,int s){
	if(x<=l&&y>=r){
		ans=min(ans,a[s]);
		return 0;
	}
	if(y>=l&&x<=l||x<=r&&y>=r||x>=l&&y<=r){
		mid=(l+r)/2;
		find(x,y,l,mid,s*2);
		find(x,y,mid+1,r,s*2+1);
	}
}
int main(){
	freopen("P1816.in","r",stdin);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		cin>>c[i];
	}
	build(1,n,1);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&xi[i],&yi[i]);
		ans=2147483647;
		find(xi[i],yi[i],1,n,1);
		cout<<ans<<" ";
	}
	return 0;
}
2024/1/24 00:01
加载中...