每天都在刷简单题。 遇到的问题: 1.一开始想到用sum记录回环了,但是没想到直接记录宿命的的数值,最后一个点过不去。 2.改了之后边界点问题没处理好,因为如果数组从0开始记录的话,出现从1开始的数,就没法用两点减法了,0位必须为0。。。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std
;
int D
[100100]={};
int C
[100100]={};
int main(){
int N
,M
,sum
=0,dis
;
int a
[2];
scanf("%d",&N
);
for(int i
=1;i
<=N
;i
++){
scanf("%d",C
+i
);
sum
+=C
[i
];
D
[i
]=sum
;
}
scanf("%d",&M
);
for(int i
=1;i
<=M
;i
++){
scanf("%d %d",a
,a
+1);
if(a
[0]>a
[1]) swap(a
[0],a
[1]);
dis
=D
[a
[1]-1]-D
[a
[0]-1];
printf("%d\n",dis
<sum
-dis
? dis
:sum
-dis
);
}
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-58890.html