做题中出现的一个问题,自己调试不出来,求指点

调试第一个循环第一次运行就有问题,自己看不出来

 #include <iostream>
#include <vector>

using std::vector;

vector<int> fast_count_segments(vector<int> starts, vector<int> ends, vector<int> points)
{
    //write your code here
    size_t p,l,r=0;
    vector<int> total(points.size()+ 2*starts.size());
    for( size_t i = 0; i < (points.size()+ 2*starts.size() -1) ; i++ )
    {
        if(points[p]<starts[l]&&points[p]<ends[r])
        {
            total[i] = points[p] ;
            continue;
        }
        else if(starts[l]<points[p]&&starts[l]<ends[r])
        {
            total[i] = starts[l];
            continue;
        }
        else
        {
            total[i] = ends[r];
            continue;
        }
    }
    p,l,r=0;
    for( size_t i = 0; i < total.size()+ 2*starts.size()-1 ; i++)
    {
        if(total[i] == starts[l])
        {
            cnt[p] = cnt[p] + 1;
            l++;
            continue;
        }
        else if(total[i] == ends[l])
        {
            cnt[p] = cnt[p] - 1;
            r++;
            continue;
        }
        else
        {
            cnt[p+1] = cnt[p] ;
            p++;
            continue;
        }
    }
    return cnt;
}

int main()
{
    int n, m;
    std::cin >> n >> m;
    vector<int> starts(n), ends(n);
    for (size_t i = 0; i < starts.size(); i++)
    {
        std::cin >> starts[i] >> ends[i];
    }
    vector<int> points(m);
    for (size_t i = 0; i < points.size(); i++)
    {
        std::cin >> points[i];
    }
    //use fast_count_segments
    vector<int> cnt = fast_count_segments(starts, ends, points);
    for (size_t i = 0; i < cnt.size(); i++)
    {
        std::cout << cnt[i] << ' ';
    }
}

我试着帮你调试下,看能否帮到你,我也很渣。。。。。。。