100分玄关求条,wa#1,感谢
  • 板块P1816 忠诚
  • 楼主Ryoo
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/2 09:23
  • 上次更新2024/11/2 11:58:35
查看原帖
100分玄关求条,wa#1,感谢
1100140
Ryoo楼主2024/11/2 09:23
#include <bits/stdc++.h>
using namespace std;
int a[100005],f[100005][32],ans[100005];
int ff(int x,int y, int s) {
	
	return min(f[x][s],f[y-(1<<s)+1][s]);
}
int main() {
	int m,n;
	scanf("%d%d", &m,&n);
	for(int i = 1; i <= m; i++) {scanf("%d", &a[i]);f[i][0] = a[i];}
	//for(int i = 1; i <= n; i++) scanf("%d%d", &b[i][0], &b[i][1]);
	int t = log(m)/log(2) +1;
	for(int j = 1; j < t; j++) {
		for(int i = 1; i <= m-(1<<j); i++) {
			f[i][j] = min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
		}
	}
	
	for(int i = 1; i <= n; i++) {
		int ll,rr;
		scanf("%d%d", &ll, &rr);
		int k = log(rr-ll+1)/log(2);
		
		ans[i] = ff(ll,rr,k);
	}
	for(int i = 1; i <= n; i++) printf("%d ", ans[i]);
	return 0;
}
2024/11/2 09:23
加载中...