题目:原题不公开,需求是给出大量进程的启动和结束时间,计算任意时间点进程并发数。进程数有限,查询次数很大。关闭开区间: [启动,关闭)
思路:先将时间区间点排序,然后遍历计数,遇到启动+1,遇到关闭-1,时间点切换时,就得出上个值到当前值区间的进程数
接口定义如下:
void number_of_tasks_running(
OUT int result[], //输出结果
IN int start[], //启动时间点
IN int end[], //结束时间点
IN int n, //进程数
IN int query[], //查询种子
IN int m) //查询数量
原版本代码所有算法都是自行实现的,效率要好一些但是篇幅偏长,下文的代码用stl简化了一下
#include
#include
#include
#include
#include