zzulioj 1232: 公交车之谜

1232: 公交车之谜
时间限制: 1 Sec 内存限制: 128 MB
提交: 629 解决: 253
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述听说郑州紫荆山公园有英语口语角,还有很多外国人呢。为了和老外对上几句,这周六早晨birdfly拉上同伴早早的就坐上了72路公交从学校向紫荆山进发。一路上没事干,birdfly开始思考一个问题。

从学校到紫荆山公园共有n(1<=n<=20)站路,birdfly刚上车时车上有m个人,每到一站都有pi个人上车,qi个人下车,问这一路上公车上最多有多少人。(0<=m, pi ,qi <=50).
输入输入有多组样例,每组样例第一行两个数n m,接下来n行每行两个数pi和qi。
输出每组实例输出这一路上(包含上车站点和下车站点)公交车上最多的人数。每组实例输出占一行。
样例输入
2 3
5 2
3 5

样例输出
6

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{    
	int i,j,t,n,first_number,pi,qi;
	int *a=NULL;
         while(scanf("%d %d",&n,&first_number)==2)
         {           
         	   int max = -10000;
                   a = (int*)malloc((n+1)*sizeof(int));
                   memset(a,0,sizeof(a));
                   /*注意题目的提示
                   从他上车那一次就有上车和下车,       
                   而不是中途开始,故a[i+1] = a[i] + pi - qi是错误的*/        
                   for(i=0;i<n;i++)        
                   {            
                   scanf("%d %d",&pi,&qi);                          
                   if(i==0)                
                   	a[0] = first_number + pi - qi;            
                   else                
                   	a[i] = a[i-1] + pi - qi;                         
                   if(a[i+1]<0)//车上最少0人                
                   	a[i+1] = 0;        
                   }        
                   for(i=0;i<n;i++)        
                   {            
                   	if(max<a[i])                
                   	max = a[i];         
                   }        
                   printf("%d\n",max);    
          }
}```

猜你喜欢

转载自blog.csdn.net/qq_43391383/article/details/84671189