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);
}

继续加油了!!!

posted @ 2018-01-12 23:17  极限之旅  阅读(115)  评论(0编辑  收藏  举报