TZOJ 车辆拥挤相互往里走
102路公交车是crq经常坐的,闲来无聊,他想知道最高峰时车上有多少人,他发现这辆车只留一个门上下人,于是他想到了一个办法,上车时先数一下车上人员数目(crq所上的站点总是人不太多),之后就坐在车门口记录上下车人数,这样用一个程序就能找出高峰时刻的人数,不过crq忙着数人,程序的任务就交给你了。
输入
输入数据的第一行为两个正整数n和m,n表示crq上车后再经过的站点数目(1<=n<=30),m表示crq上车后车上的人数。
接下来有n行,每行有两个非负整数x和y,分别表示该站点下车人数和上车人数(先下后上),数据保证人数符合实际(0<=x,y<=20)。(所有提到的人数都已经将crq自己包含在内)
输出
输出车辆行驶过程中最高峰时刻车上有多少人。
样例输入
3 5
3 4
5 2
0 1
样例输出
6
下面是考试时候写的错误代码,怎么就没注意每一组数组初始时的人数呢
#include <stdio.h> int main() { int i,k,j,m,n,s,h; int a[1001]; scanf("%d %d",&n,&m); for(i=0;i<n;i++) { scanf("%d %d",&s,&k); } for(i=0;i<n;i++) { a[i]=m-s+k;//从a[1]后面就错了 } for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(a[j]<a[j+1]) { h=a[j];a[j]=a[j+1];a[j+1]=h; } } } printf("%d\n",a[0]); } 改正过的代码就是简单,想想,冒泡还是复杂了 #include <stdio.h> int main() { int i,n,j,k,m,s=-90,h; scanf("%d %d",&n,&m); for(i=0;i<n;i++) { scanf("%d %d",&j,&k); m=m-j+k; if(s<m) { s=m; } } printf("%d",s); }
继续加油了!!!