简单题,sub[]记录差值,遍历一遍,用sum记录差值和,小于零的位置做个标记,sum清零,否则继续加和
#include<cstdio>
typedef long long ll;
const int N=1e6+5;
int a[N],b[N],sub[2*N];
int main(){
int n;
while(~scanf("%d",&n)){
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
sub[i]=a[i]-b[i];
}
for(int i=n+1;i<=2*n;i++) sub[i]=sub[i-n];
ll sum=0;
int res=0;
for(int i=1;i<=2*n;i++){
if(sum+sub[i]<0){
res=i;
sum=0;
}
else
sum+=sub[i];
}
printf("%d\n",res);
}
return 0;
}