题目链接:
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 222222 7 int level[MAXN]; 8 int dp[MAXN]; 9 int n,w,l;10 11 int main(){12 while(~scanf("%d",&n)){13 int st=0,ans=0,now=0;14 memset(dp,0,sizeof(dp));15 for(int i=1;i<=n;i++){16 scanf("%d%d",&w,&l);17 level[i]=level[i+n]=w-l;18 }19 for(int i=1;i<=2*n;i++){20 if(now+level[i]>=0){21 now+=level[i];22 dp[i]=dp[i-1]+1;23 //最多n个城市24 if(i-st==n){25 ans=max(ans,dp[i]);26 break;27 }28 }else {29 now=0,st=i;//注意这里st应该改为i.30 dp[i]=0;31 ans=max(ans,dp[i-1]);32 }33 }34 printf("%d\n",ans);35 }36 return 0;37 }