codeup 1814 剩下的树

codeup 1814 剩下的树

题目描述

有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。
现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。
可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。

输入

两个整数L(1<=L<=10000)和M(1<=M<=100)。
接下来有M组整数,每组有一对数字。

输出

可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。

解题代码

#include 
using namespace std;

const  int max = 10005;
bool buff[max];  

int main()
{
    int m,l;
    while(scanf("%d%d",&l,&m)!=EOF)
    {
        if(l==0&&m==0)
            break;
        for(int i=0;i<=l;i++)
            buff[i] = 1;  //1表示有树
        int a,b;

        while(m--)
        {
            scanf("%d%d",&a,&b);
            for(int j=a;j<=b;j++)
                buff[j] = 0 ; //0表示没树 

         } 
        int ans=0;
        for(int j=0;j<=l;j++)
        {
            if(buff[j]==1)
                ans++;
         } 
         printf("%d\n",ans);

    }
    return 0;
}

你可能感兴趣的:(算法笔记-第三章)