一个环的话,只要求出一段,然后sum-这一段,就是另一端距离。
#include<iostream>using namespace std;int main(){ int sum = 0; #define MAX 100010 int arc[MAX]; int N; cin >> N; arc[0] = 0; arc[1] = 0; for (int t = 2;t <= N+1;t++) { int x; cin >> x; arc[t] = arc[t - 1] + x; sum +=x; } int M; cin >> M; for (int t = 0;t < M;t++) { int i, j, temp, min; cin >> i >> j; temp = i > j ? i : j; if (temp == i) { i = j; j = temp; } int a = arc[j] - arc[i]; min = a >= sum - a ? sum - a : a; cout << min << endl; }新闻热点
疑难解答