1046. Shortest Distance (20)

#include <iostream>

using namespace std;

int dis[100010];

void swap(int &a, int &b)
{
	int temp = a;
	a = b;
	b = temp;
}

int getmin(int a, int b)
{
	if(a < b)
	{
		return a;
	}
	else
	{
		return b;
	}
}

int main()
{
	int n;
	scanf("%d", &n);

	int i, sum = 0, cur;
	for(i = 1; i <= n; i++)
	{
		scanf("%d", &cur);
		sum += cur;

		if(i < n)
		{
			dis[i + 1] = dis[i] + cur;
		}
	}

	int m;
	scanf("%d", &m);

	int a, b, min;
	for(i = 1; i <= m; i++)
	{
		scanf("%d%d", &a, &b);

		if(a > b)
		{
			swap(a, b);
		}

		cur = dis[b] - dis[a];
		min = getmin(cur, sum - cur);

		printf("%d\n", min);
	}

	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:07  王景迁  阅读(2)  评论(0)    收藏  举报

导航