一道“校门外的树”不是很理解?

这道“校门外的树”的算法我不是很理解,希望大家帮我解析一下代码,并举个实际数据的例子给我看一下,非常感谢!

img

img

img

#include <cstdio>
#include <cstring>

int main()
{
    int m, n, l, k;
    int a[10001];
    while (scanf("%d%d", &m, &n) != EOF)
    {
        memset(a, 0, sizeof(a));
        while (n--)
        {
            scanf("%d%d", &l, &k);
            for (int i = 1; i <= k; i++)
            {
                a[i] = 1;
            }
        }
        int count = 0;
        for(int j = 0; j <= m, j++)
        {
            if(a[j] == 0)
                count++;
        }
        printf("%d\n", count);
    }
    return 0;
}

哪里不理解呢
一开始数组中所有值都为0,每输入一个范围,就将数组中对应范围内存放的值改为1,重复这一过程直到处理完所有输入
然后统计数组中剩余的0的个数,就是剩余的树的数量