Submission #1149848

#TimeUsernameProblemLanguageResultExecution timeMemory
1149848onbertCake 3 (JOI19_cake3)C++20
24 / 100
4093 ms5388 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

bool cmp(pair<int,int> a, pair<int,int> b) {
    if (a.second != b.second) return a.second < b.second;
    return a.first < b.first;
}
const int maxn = 2e5 + 5, INF = 1e18;
int n, m;
pair<int,int> a[maxn];


int ans = -INF;
void cal(vector<pair<int,int>> vec) {
    sort(vec.begin(), vec.end(), cmp);
    int sz = vec.size();
    // cout << sz << endl;
    for (int i=1;i<sz;i++) vec[i].first += vec[i-1].first;
    for (int r = m-1; r < sz; r++) {
        int l = r - m + 1;
        int curans = vec[r].first;
        if (l > 0) curans -= vec[l-1].first;
        curans -= (vec[r].second - vec[l].second) * 2;
        // cout << sz << " " << r << " " << curans << endl;
        ans = max(curans, ans);
    }
}

signed main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n >> m;
    for (int i=1;i<=n;i++) cin >> a[i].first >> a[i].second;
    sort(a+1, a+n+1);
    reverse(a+1, a+n+1);
    vector<pair<int,int>> vec;
    for (int i=1;i<=n;i++) {
        vec.push_back(a[i]);
        if (i >= m) cal(vec);
    }
    cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...