#include <bits/stdc++.h>
#define FOR(i, l, r) for (int i = l; i <= r; ++i)
#define FORD(i, r, l) for (int i = r; i >= l; --i)
#define ll long long
#define pb push_back
#define all(x) (x).begin(), (x).end()
using namespace std;
const int N = 2e5;
int n, m;
ll a[N + 3], b[N + 3], s[N + 3], f[N + 3];
void maximize(ll &a, ll b) {
if (a < b) a = b;
}
ll M(ll s,ll f,int pos) {
return (f - s) * max(a[pos], b[pos]);
}
ll cal(int pos,ll val) {
return (f[pos] - s[pos]) * val;
}
namespace sub1 {
void solve() {
cout << M(s[1], f[1], 1);
}
}
namespace sub2 {
void solve() {
int l = max(s[1] , s[2]);
int r = min(f[1] , f[2]);
if(l > r || m == 2) cout << M(s[1] , f[1] , 1) + M(s[2] , f[2] , 2);
else{
ll beforeLR = 0,inLR = 0,afterLR = 0;
if(s[1] < l) beforeLR = M(s[1] , l , 1);
else beforeLR = M(s[2] , l , 2);
inLR = (r - l) * (b[1] + b[2] + max({0ll , a[1] - b[1] , a[2] - b[2]}));
if(f[1] >= r) afterLR = M(r , f[1] , 1);
else afterLR = M(r , f[2] , 2);
cout << beforeLR + inLR + afterLR;
}
}
}
namespace sub3 {
ll dp[203][203], pre[203];
vector<int> pos;
void solve(){
memset(dp , -0x3f , sizeof(dp));
FOR(i, 1, n) pos.pb(s[i]), pos.pb(f[i]);
sort(all(pos));
m = min(m, n);
dp[0][0] = 0;
FOR(j, 1, 2 * n - 1) {
vector<ll> dif;
int l = pos[j - 1];
int r = pos[j];
ll sum = 0;
FOR(i, 1, n)
if(s[i] <= l && r <= f[i]){
sum += b[i];
dif.pb(a[i] - b[i]);
}
sort(all(dif), greater<ll>());
int k = min(m,(int) dif.size());
FOR(o, 1, k) pre[o] = pre[o - 1] + max(0ll ,dif[o - 1]);
FOR(x, 0, m) FOR(y, 0, x) {
maximize(dp[j][x], dp[j - 1][y] + (sum + pre[min(k, x)]) * (r - l) * 1ll);
}
}
ll ans = -1e18;
FOR(j , 0 , m) ans = max(ans , dp[2 * n - 1][j]);
cout << ans;
}
}
namespace sub4 {
struct Event {
int Time, id, Type;
Event(int x = 0, int y = 0, int z = 0) {
Time = x;
id = y;
Type = z;
}
bool operator < (const Event &ot) const {
if (Time != ot.Time) return Time < ot.Time;
return Type > ot.Type;
}
};
vector <Event> Events;
multiset <ll> best, temp;
ll sum, res, ans;
void add(ll profit) {
// bỏ qua các số bé hoặc bằng 0 vì khi nhận nó kết quả sẽ không tối ưu
if (profit <= 0) return ;
if ((int) best.size() < m) {
sum += profit;
best.insert(profit);
}
else if (profit > (*best.begin())) {
multiset <ll> :: iterator it = best.begin();
ll val = *it;
sum -= val;
best.erase(it);
temp.insert(val);
best.insert(profit);
sum += profit;
}
else temp.insert(profit);
}
void del(ll profit) {
// bỏ qua các số bé hoặc bằng 0 vì khi nhận nó kết quả sẽ không tối ưu
if (profit <= 0) return ;
if (best.find(profit) != best.end()) {
best.erase(best.find(profit));
sum -= profit;
if (!temp.empty()) {
multiset <ll> :: iterator it = prev(temp.end());
ll val = *it;
temp.erase(it);
best.insert(val);
sum += val;
}
}
else if (temp.find(profit) != temp.end())
temp.erase(temp.find(profit));
}
void solve() {
FOR(i, 1, n) {
Events.push_back(Event(s[i], i, 1));
Events.push_back(Event(f[i], i, -1));
}
sort(Events.begin(), Events.end());
int it = 0;
while (it < 2 * n) {
int T = Events[it].Time;
while (it < 2 * n && Events[it].Time == T) {
int id = Events[it].id;
int Type = Events[it].Type;
if (Type == 1) {
res += b[id];
add(a[id] - b[id]);
}
else {
res -= b[id];
del(a[id] - b[id]);
}
++it;
}
if (it < 2 * n) {
ll Length = Events[it].Time - T;
ans += Length * (res + sum);
}
}
cout << ans;
}
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
freopen("AICONF.inp" , "r" , stdin);
freopen("AICONF.out" , "w" , stdout);
cin >> n >> m;
FOR(i, 1, n) cin >> a[i] >> b[i] >> s[i] >> f[i];
if (n == 1) sub1::solve();
else if (n == 2) sub2::solve();
else if (n <= 100) sub3::solve();
else sub4::solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZPUihpLCBsLCByKSBmb3IgKGludCBpID0gbDsgaSA8PSByOyArK2kpCiNkZWZpbmUgRk9SRChpLCByLCBsKSBmb3IgKGludCBpID0gcjsgaSA+PSBsOyAtLWkpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gMmU1OwppbnQgbiwgbTsKbGwgYVtOICsgM10sIGJbTiArIDNdLCBzW04gKyAzXSwgZltOICsgM107Cgp2b2lkIG1heGltaXplKGxsICZhLCBsbCBiKSB7CiAgICBpZiAoYSA8IGIpIGEgPSBiOwp9CgpsbCBNKGxsIHMsbGwgZixpbnQgcG9zKSB7CiAgICByZXR1cm4gKGYgLSBzKSAqIG1heChhW3Bvc10sIGJbcG9zXSk7Cn0KbGwgY2FsKGludCBwb3MsbGwgdmFsKSB7CiAgICByZXR1cm4gKGZbcG9zXSAtIHNbcG9zXSkgKiB2YWw7Cn0KCm5hbWVzcGFjZSBzdWIxIHsKICAgIHZvaWQgc29sdmUoKSB7CiAgICAgICAgY291dCA8PCBNKHNbMV0sIGZbMV0sIDEpOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMiB7CiAgICB2b2lkIHNvbHZlKCkgewogICAgICAgIGludCBsID0gbWF4KHNbMV0gLCBzWzJdKTsKICAgICAgICBpbnQgciA9IG1pbihmWzFdICwgZlsyXSk7CiAgICAgICAgaWYobCA+IHIgfHwgbSA9PSAyKSBjb3V0IDw8IE0oc1sxXSAsIGZbMV0gLCAxKSArIE0oc1syXSAsIGZbMl0gLCAyKTsKICAgICAgICBlbHNlewogICAgICAgICAgICBsbCBiZWZvcmVMUiA9IDAsaW5MUiA9IDAsYWZ0ZXJMUiA9IDA7CiAgICAgICAgICAgIGlmKHNbMV0gPCBsKSBiZWZvcmVMUiA9IE0oc1sxXSAsIGwgLCAxKTsKICAgICAgICAgICAgZWxzZSBiZWZvcmVMUiA9IE0oc1syXSAsIGwgLCAyKTsKCiAgICAgICAgICAgIGluTFIgPSAociAtIGwpICogKGJbMV0gKyBiWzJdICsgbWF4KHswbGwgLCBhWzFdIC0gIGJbMV0gLCBhWzJdIC0gYlsyXX0pKTsKICAgICAgICAgICAgaWYoZlsxXSA+PSByKSBhZnRlckxSID0gTShyICwgZlsxXSAsIDEpOwogICAgICAgICAgICBlbHNlIGFmdGVyTFIgPSBNKHIgLCBmWzJdICwgMik7CgogICAgICAgICAgICBjb3V0IDw8IGJlZm9yZUxSICsgaW5MUiArIGFmdGVyTFI7CiAgICAgICAgfQogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMyB7CiAgICBsbCBkcFsyMDNdWzIwM10sIHByZVsyMDNdOwogICAgdmVjdG9yPGludD4gcG9zOwogICAgdm9pZCBzb2x2ZSgpewogICAgICAgIG1lbXNldChkcCAsIC0weDNmICwgc2l6ZW9mKGRwKSk7CiAgICAgICAgRk9SKGksIDEsIG4pIHBvcy5wYihzW2ldKSwgcG9zLnBiKGZbaV0pOwogICAgICAgIHNvcnQoYWxsKHBvcykpOwogICAgICAgIG0gPSBtaW4obSwgbik7CiAgICAgICAgZHBbMF1bMF0gPSAwOwoKICAgICAgICBGT1IoaiwgMSwgMiAqIG4gLSAxKSB7CiAgICAgICAgICAgIHZlY3RvcjxsbD4gZGlmOwogICAgICAgICAgICBpbnQgbCA9IHBvc1tqIC0gMV07CiAgICAgICAgICAgIGludCByID0gcG9zW2pdOwogICAgICAgICAgICBsbCBzdW0gPSAwOwogICAgICAgICAgICBGT1IoaSwgMSwgbikKICAgICAgICAgICAgICAgIGlmKHNbaV0gPD0gbCAmJiByIDw9IGZbaV0pewogICAgICAgICAgICAgICAgICAgIHN1bSArPSBiW2ldOwogICAgICAgICAgICAgICAgICAgIGRpZi5wYihhW2ldIC0gYltpXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICBzb3J0KGFsbChkaWYpLCBncmVhdGVyPGxsPigpKTsKICAgICAgICAgICAgaW50IGsgPSBtaW4obSwoaW50KSBkaWYuc2l6ZSgpKTsKCiAgICAgICAgICAgIEZPUihvLCAxLCBrKSBwcmVbb10gPSBwcmVbbyAtIDFdICsgbWF4KDBsbCAsZGlmW28gLSAxXSk7CiAgICAgICAgICAgIEZPUih4LCAwLCBtKSBGT1IoeSwgMCwgeCkgewogICAgICAgICAgICAgICAgbWF4aW1pemUoZHBbal1beF0sIGRwW2ogLSAxXVt5XSArIChzdW0gKyBwcmVbbWluKGssIHgpXSkgKiAociAtIGwpICogMWxsKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbGwgYW5zID0gLTFlMTg7CiAgICAgICAgRk9SKGogLCAwICwgbSkgYW5zID0gbWF4KGFucyAsIGRwWzIgKiBuIC0gMV1bal0pOwogICAgICAgIGNvdXQgPDwgYW5zOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViNCB7CiAgICBzdHJ1Y3QgRXZlbnQgewogICAgICAgIGludCBUaW1lLCBpZCwgVHlwZTsKCiAgICAgICAgRXZlbnQoaW50IHggPSAwLCBpbnQgeSA9IDAsIGludCB6ID0gMCkgewogICAgICAgICAgICBUaW1lID0geDsKICAgICAgICAgICAgaWQgPSB5OwogICAgICAgICAgICBUeXBlID0gejsKICAgICAgICB9CgogICAgICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgRXZlbnQgJm90KSBjb25zdCB7CiAgICAgICAgICAgIGlmIChUaW1lICE9IG90LlRpbWUpIHJldHVybiBUaW1lIDwgb3QuVGltZTsKICAgICAgICAgICAgcmV0dXJuIFR5cGUgPiBvdC5UeXBlOwogICAgICAgIH0KICAgIH07CgogICAgdmVjdG9yIDxFdmVudD4gRXZlbnRzOwogICAgbXVsdGlzZXQgPGxsPiBiZXN0LCB0ZW1wOwogICAgbGwgc3VtLCByZXMsIGFuczsKCiAgICB2b2lkIGFkZChsbCBwcm9maXQpIHsKCS8vIGLhu48gcXVhIGPDoWMgc+G7kSBiw6kgaG/hurdjIGLhurFuZyAwIHbDrCBraGkgbmjhuq1uIG7DsyBr4bq/dCBxdeG6oyBz4bq9IGtow7RuZyB04buRaSDGsHUKICAgICAgICBpZiAocHJvZml0IDw9IDApIHJldHVybiA7CiAgICAgICAgaWYgKChpbnQpIGJlc3Quc2l6ZSgpIDwgbSkgewogICAgICAgICAgICBzdW0gKz0gcHJvZml0OwogICAgICAgICAgICBiZXN0Lmluc2VydChwcm9maXQpOwogICAgICAgIH0KCiAgICAgICAgZWxzZSBpZiAocHJvZml0ID4gKCpiZXN0LmJlZ2luKCkpKSB7CiAgICAgICAgICAgIG11bHRpc2V0IDxsbD4gOjogaXRlcmF0b3IgaXQgPSBiZXN0LmJlZ2luKCk7CiAgICAgICAgICAgIGxsIHZhbCA9ICppdDsKICAgICAgICAgICAgc3VtIC09IHZhbDsKICAgICAgICAgICAgYmVzdC5lcmFzZShpdCk7CiAgICAgICAgICAgIHRlbXAuaW5zZXJ0KHZhbCk7CgogICAgICAgICAgICBiZXN0Lmluc2VydChwcm9maXQpOwogICAgICAgICAgICBzdW0gKz0gcHJvZml0OwogICAgICAgIH0KCiAgICAgICAgZWxzZSB0ZW1wLmluc2VydChwcm9maXQpOwogICAgfQoKICAgIHZvaWQgZGVsKGxsIHByb2ZpdCkgewoJLy8gYuG7jyBxdWEgY8OhYyBz4buRIGLDqSBob+G6t2MgYuG6sW5nIDAgdsOsIGtoaSBuaOG6rW4gbsOzIGvhur90IHF14bqjIHPhur0ga2jDtG5nIHThu5FpIMawdQogICAgICAgIGlmIChwcm9maXQgPD0gMCkgcmV0dXJuIDsKICAgICAgICBpZiAoYmVzdC5maW5kKHByb2ZpdCkgIT0gYmVzdC5lbmQoKSkgewogICAgICAgICAgICBiZXN0LmVyYXNlKGJlc3QuZmluZChwcm9maXQpKTsKICAgICAgICAgICAgc3VtIC09IHByb2ZpdDsKCiAgICAgICAgICAgIGlmICghdGVtcC5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICBtdWx0aXNldCA8bGw+IDo6IGl0ZXJhdG9yIGl0ID0gcHJldih0ZW1wLmVuZCgpKTsKICAgICAgICAgICAgICAgIGxsIHZhbCA9ICppdDsKICAgICAgICAgICAgICAgIHRlbXAuZXJhc2UoaXQpOwoKICAgICAgICAgICAgICAgIGJlc3QuaW5zZXJ0KHZhbCk7CiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIGlmICh0ZW1wLmZpbmQocHJvZml0KSAhPSB0ZW1wLmVuZCgpKQogICAgICAgICAgICB0ZW1wLmVyYXNlKHRlbXAuZmluZChwcm9maXQpKTsKICAgIH0KCiAgICB2b2lkIHNvbHZlKCkgewogICAgICAgIEZPUihpLCAxLCBuKSB7CiAgICAgICAgICAgIEV2ZW50cy5wdXNoX2JhY2soRXZlbnQoc1tpXSwgaSwgMSkpOwogICAgICAgICAgICBFdmVudHMucHVzaF9iYWNrKEV2ZW50KGZbaV0sIGksIC0xKSk7CiAgICAgICAgfQogICAgICAgIHNvcnQoRXZlbnRzLmJlZ2luKCksIEV2ZW50cy5lbmQoKSk7CgogICAgICAgIGludCBpdCA9IDA7CiAgICAgICAgd2hpbGUgKGl0IDwgMiAqIG4pIHsKICAgICAgICAgICAgaW50IFQgPSBFdmVudHNbaXRdLlRpbWU7CgogICAgICAgICAgICB3aGlsZSAoaXQgPCAyICogbiAmJiBFdmVudHNbaXRdLlRpbWUgPT0gVCkgewogICAgICAgICAgICAgICAgaW50IGlkID0gRXZlbnRzW2l0XS5pZDsKICAgICAgICAgICAgICAgIGludCBUeXBlID0gRXZlbnRzW2l0XS5UeXBlOwoKICAgICAgICAgICAgICAgIGlmIChUeXBlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXMgKz0gYltpZF07CiAgICAgICAgICAgICAgICAgICAgYWRkKGFbaWRdIC0gYltpZF0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJlcyAtPSBiW2lkXTsKICAgICAgICAgICAgICAgICAgICBkZWwoYVtpZF0gLSBiW2lkXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGl0IDwgMiAqIG4pIHsKICAgICAgICAgICAgICAgIGxsIExlbmd0aCA9IEV2ZW50c1tpdF0uVGltZSAtIFQ7CiAgICAgICAgICAgICAgICBhbnMgKz0gTGVuZ3RoICogKHJlcyArIHN1bSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNvdXQgPDwgYW5zOwogICAgfQp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBmcmVvcGVuKCJBSUNPTkYuaW5wIiAsICJyIiAsIHN0ZGluKTsKICAgIGZyZW9wZW4oIkFJQ09ORi5vdXQiICwgInciICwgc3Rkb3V0KTsKCiAgICBjaW4gPj4gbiA+PiBtOwogICAgRk9SKGksIDEsIG4pIGNpbiA+PiBhW2ldID4+IGJbaV0gPj4gc1tpXSA+PiBmW2ldOwoKICAgIGlmIChuID09IDEpIHN1YjE6OnNvbHZlKCk7CiAgICBlbHNlIGlmIChuID09IDIpIHN1YjI6OnNvbHZlKCk7CiAgICBlbHNlIGlmIChuIDw9IDEwMCkgc3ViMzo6c29sdmUoKTsKICAgIGVsc2Ugc3ViNDo6c29sdmUoKTsKCiAgICByZXR1cm4gMDsKfQo=