A1046. Shortest Distance(20)

17/20,部分超时。

#include<bits/stdc++.h>
using namespace std;
int N,x,pairs;
int a,b;
vector<int> dist;
void input(){
    cin>>N;
    for(int i=0;i<N;i++){
        cin>>x;
        dist.push_back(x);
    }
}
void solve(){
    cin>>pairs;
    for(int i=0;i<pairs;i++){
        cin>>a>>b;
        int sum1=0;
        int sum2=0;
        int sum=0;
        if(a==b)cout<<0<<endl;
        else if(a<b){
            for(int j=a-1;j<b-1;j++)sum1+=dist[j];
            for(int j=b-1;j<5;j++)sum2+=dist[j];
            for(int j=0;j<a-1;j++)sum2+=dist[j];
        }
        else{
            for(int j=a-1;j<5;j++)sum1+=dist[j];
            for(int j=0;j<b-1;j++)sum1+=dist[j];
            for(int j=b-1;j<a-1;j++)sum2+=dist[j];
        }
        sum=(sum1<sum2)?sum1:sum2;
        cout<<sum<<endl;
    }
}
int main(){
    input();
    solve();
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/MarkKobs-blog/p/10548736.html