题目链接:Problem - 1422 (hdu.edu.cn)
题目:
题目样例:
题目思路:
先求差值,再进行相加,求最长的非负区间,最长应为n。
AC:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int n;
int a[N],b[N],s[N];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
while(cin>>n){
for(int i=0;i<n;i++){
cin>>a[i];
cin>>b[i];
s[i]=a[i]-b[i];
s[n+i]=s[i];
}
int ans=0,sum=0,x=0;
for(int i=0;i<n*2;i++){
sum+=s[i];
x++;
if(sum<0){
x=0;
sum=0;
}
ans=max(ans,x);
}
cout<<min(n,ans)<<endl;
}
return 0;
}