听说灌水区人多
查看原帖
听说灌水区人多
543555
_Emperorpenguin_楼主2024/3/12 19:55

[https://www.luogu.com.cn/problem/P1816](P1816 忠诚)

8080 pts;

#9 #10 WA了

求调

#include <bits/stdc++.h>
#pragma GCC optmize(2)
using namespace std;

const int N=1e5;
int n,m; 
int a[N],d[4*N];

void build(int l,int r,int p){
	if(l==r){
		d[p]=a[l];
		return;
	}	
	int mid=l+r>>1;
	build(l,mid,2*p);
	build(mid+1,r,2*p+1);
	d[p]=min(d[2*p],d[2*p+1]);
	return;
}

int getmin(int a,int b,int l,int r,int p){
	if(a<=l&&r<=b) return d[p];
	int mid=l+r>>1,ans=0x7f7f7f7f;
	if(a<=mid) ans=min(ans,getmin(a,b,l,mid,2*p));
	if(b>=mid+1) ans=min(ans,getmin(a,b,mid+1,r,2*p+1));
	return ans;
}

signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	memset(d,0x7f,sizeof(d));
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	build(1,n,1);
	while(m--){
		int a,b;
		cin>>a>>b;
		cout<<getmin(a,b,1,n,1)<<" ";
	}
	return 0;
}


2024/3/12 19:55
加载中...