#include <cstdio> #include <cstdlib> #include <vector> using namespace std; int min_dist(vector<int> &dsum, int a, int b) { if (a == b) return 0; if (a > b) { int t = a; a = b; b = t; } int d1 = dsum[b-1] - dsum[a-1]; int d2 = dsum[a-1] + dsum.back() - dsum[b-1]; return d1 < d2 ? d1 : d2; } int main() { int n; scanf("%d", &n); vector<int> dist(n, 0); for (int i=0; i<n; i++) { scanf("%d", &dist[i]); } vector<int> sum(n+1, 0); for (int i=0; i<n; i++) { sum[i+1] = sum[i] + dist[i]; } int k; scanf("%d", &k); for (int i=0; i<k; i++) { int a, b; scanf("%d%d", &a, &b); printf("%d ", min_dist(sum, a, b)); } system("pause"); return 0; }
为什么速度还是快不起来