3629. Channel On Live
题目意思
给n,m两个数字,n表示有n个人,m表示总时长,要你求最大同时观看人数,下面n行给出两个数字si,ti,表示第i个人的观看时间si-ti,求最大同时观看人数和平均观看人数。
好像就是一个板子题?给你n个区间,让你求n个区间中某个值出现的最大次数。
#include<iostream>
#include<algorithm>
using namespace std;
int a[250001], b[250001], n;
int main()
{
int m, in = 1, mx = 1, f;
double sum = 0;
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%d%d", &a[i], &b[i]);
sum += b[i] - a[i] + 1;
}
sort(a, a + n);
sort(b, b + n);
f = a[0];
int i = 1, j = 0;
while (i < n && j < n)
{
if (a[i] <= b[j])
{
in++;
if (in > mx)
{
mx = in;
f = a[i];
}
i++;
}
else
{
in--;
j++;
}
}
sum /= m;
printf("%d\n%.12lf\n", mx, sum);
}