分析:输入不做处理会超时,附上超时和AC代码
AC代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#define MAX 999999999
using namespace std;
int n,m,k;
int dis[100001];
int main()
{
cin>>n;
for(int i = 1;i<=n;i++){
int x;
cin>>x;
dis[i] = dis[i-1] + x;
}
cin>>m;
while(m--)
{
int a,b;
cin>>a>>b;
if(a > b)
{
int t = a;
a = b;
b = t;
}
int dis1 = dis[b-1] - dis[a-1];
int dis2 = dis[n] - dis[b-1] + dis[a-1];
cout<<(dis1>dis2?dis2:dis1)<<endl;
}
return 0;
}
超时代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#define MAX 999999999
using namespace std;
int n,m,k;
int dis[100001];
int main()
{
cin>>n;
for(int i = 0;i<n;i++){
cin>>dis[i];
}
cin>>m;
while(m--)
{
int a,b;
cin>>a>>b;
a--;b--;
if(a > b)
{
int t = a;
a = b;
b = t;
}
int mmin1 = 0;
for(int i = a;i<b;i++)
mmin1 += dis[i];
int mmin2 = 0;
for(int i = 1;i <= n-(b-a);i++)
mmin2 += dis[(b+i-1)%n];
cout<<(mmin1<mmin2?mmin1:mmin2)<<endl;
}
return 0;
}