#include <iostream>
// #include <fstream>
// std::ifstream cin ("tttt.in");
// std::ofstream cout ("tttt.out");
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <vector>
#include <array>
#include <algorithm>
#include <numeric>
#include <iomanip>
#include <unordered_set>
#include <stack>
#include <ext/pb_ds/assoc_container.hpp>
#include <random>
#include <chrono>
#include <bitset>
#include <complex>
using namespace std;
using namespace __gnu_pbds;
#define ll long long
#define f first
#define s second
template <class T> using iset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T, typename U>
bool emin(T &a, const U &b) { return b < a ? a = b, true : false; }
template <typename T, typename U>
bool emax(T &a, const U &b) { return b > a ? a = b, true : false; }
typedef uint64_t hash_t;
ll const inf = (ll) 1e15 + 7;
int const M = (ll) 1e9 + 7;
int const IM = (ll) 5e8 + 4;
int main() {
int n, m; cin >> n >> m;
vector<pair<ll, ll>> a(n);
for(auto &u : a) cin >> u.f >> u.s;
sort(a.begin(), a.end(), [](auto x, auto y) { return x.s < y.s; });
ll sum = 0;
for(int i = 0; i < m; i++) sum += a[i].f;
ll an = sum - 2 * (a[m - 1].s - a[0].s);
for(int i = 1; i + m <= n; i++) {
sum += a[i + m - 1].f - a[i - 1].f;
emax(an, sum - 2 * (a[i + m - 1].s - a[i].s));
}
cout << an;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |