求助
查看原帖
求助
1073390
xirunzhao楼主2024/5/26 17:10
#include <bits/stdc++.h>
using namespace std;
#define N 1000010
#define ll long long
ll n, m, x, y;
ll a[N], lg[N], f[N][20], f1[N][20];
signed main() 
{
	cin >> n >> m;
	lg[1] = 0;
	for (int i = 2; i <= n; i++) 
	lg[i] = lg[i >> 1] + 1;
	for (int i = 1; i <= n; i++) 
	cin >> f[i][0];
	for (int j = 1; j <= lg[n]; j++)
		for (int i = 1; i + (1 << j) - 1 <= n; i++) 
		{
			f[i][j] = min(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
			f1[i][j]=max(f1[i][j - 1], f1[i + (1 << (j - 1))][j - 1]);
		}
	for (int i = 1; i <= m; i++) 
	{
		cin >> x >> y;
		int l = lg[y - x + 1];
		cout << max(f1[x][l], f1[y - (1 << l) + 1][l]) - min(f[x][l], f[y - (1 << l) + 1][l]) << " ";
	}
	
	return 0;
	}

输出负数

2024/5/26 17:10
加载中...