调试第一个循环第一次运行就有问题,自己看不出来
#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] << ' ';
}
}