AC了4个,TLE了6个点
(而且为什么不能下载数据点qwq)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int M = 1e5 + 10;
const int INF = 0x3f3f3f;
int n, m;
ll st[M], ed[M];
ll lft, rit;
bool judge(ll d)
{
ll l = st[1], cow = 0;
for (int i=1; i<=m; i++)
{
l = max(l, st[i]);
if (ed[i] >= l)
{
ll x = (ed[i] - l) / d + 1;
cow += x;
l += x * d;
}
}
return cow >= n;
}
int main()
{
scanf("%d %d", &n, &m);
for (int i=1; i<=m; i++)
{
scanf("%I64d %I64d", &st[i], &ed[i]);
}
sort(st + 1, st + 1 + m);
sort(ed + 1, ed + 1 + m);
lft = st[1], rit = ed[m];
ll l = 1, r = rit;
while (l < r)
{
ll mid = (l + r) / 2;
if (judge(mid)) l = mid;
else r = mid - 1;
}
cout << l << endl;
return 0;
}
还请巨佬帮忙查错orz