1046. Shortest Distance (20)

来源:互联网 发布:神马软件 编辑:程序博客网 时间:2024/06/07 07:56

计算下前缀和,再判断是直接走还是反向绕过去。

#include <iostream>#include <stdio.h>#include <string.h>#include <vector>#include <map>#include <stack>#include <queue>#include <algorithm>#include <set>using namespace std;const int maxn=1e5+10;int n,m,sum,dis[maxn];int main(){    //freopen("E://PAT/input.txt", "r", stdin);    scanf("%d",&n);    for(int i=1;i<=n;i++){        int t;        scanf("%d",&t);        dis[i+1]=dis[i]+t;        sum+=t;    }    scanf("%d",&m);    while(m--){        int s,e;        scanf("%d %d",&s,&e);        if(s>e) swap(s,e);        int ans=min(dis[e]-dis[s],sum+dis[s]-dis[e]);        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击