南门的树(数组)★★★ c++版本 10分

南门长度为L的马路东边有一排树,每两棵相邻的树之间的间隔都是1米。如果把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
现在,因为马路要扩建,所以在施工的过程中,需要将某些区域的树先移走。这些区域用它们在数轴上的起始点和终止点表示。可能有重合的部分。
Input
输入的第一行有两个整数L(1 <= L <= 1000)和 M(1 <= M <= 10),L代表马路的长度,M代表区域的数目,之间用一个空格隔开。接下来的M行每行包含两个不同的整数,表示一个区域的起点和 终点坐标(起点坐标<终点坐标)。
Output
输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

500 3
150 300
100 200
470 471 
298

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include
#include
using namespace std;
int main(){
   int m,n;
    cin>>m>>n;
    int a[m+2]={0};//防止边界不够大,多设置几个
    for(int i=0;i<=m;i++) a[i]=1;//让数组内所有置为1
        for(int i=0;i<=n;i++){
            int l,r;
            cin>>l>>r;//输入l与r
            for(int j=l;j<=r;j++) a[j]=0;//让出现的置为0
        }
    int sum=0;
    for(int i=0; i<=m; i++) sum+=a[i];//统计树剩余的数目
    cout<

你可能感兴趣的:(算法,c++,数据结构)