P11581

· · 题解

首先,将记录按时间排序;接着,选 ii+11\le i<n)的记录做差取最大值;最后,输出答案。

#include <bits/stdc++.h>
using namespace std;
int n;
double ans;
pair<int, int> a[100001];
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
        scanf("%d%d", &a[i].first, &a[i].second);
    sort(a + 1, a + 1 + n);
    for(int i = 1; i < n; i++)
        ans = max(ans, 1.0 * abs(a[i + 1].second - a[i].second) / (a[i + 1].first - a[i].first));
    cout << ans;
    return 0;
}

知识:pair 也能排序,先看 first,如果相同,看 second
警示后人:n 的范围在题干中,不要看下面 50\% 的数据;位置做差要取绝对值,可能往回跑。