PAT 1046. Shortest Distance

#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\n", min_dist(sum, a, b));    

    }

    system("pause");

    return 0;

}


为什么速度还是快不起来

你可能感兴趣的:(test)