// #pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
// #pragma GCC target("avx2")
#define int long long
using namespace std;
signed main(){
int n, k, x;
cin >> n >> k >> x;
int crime[n];
vector<pair<int, pair<int, int>>> v;
for(int i = 0; i < n; i++) {
int l, t, r;
cin >> l >> t >> r;
v.push_back({l, {i, 1}});
v.push_back({r + 1, {i, -2}});
v.push_back({r + 1, {i + k, 3}});
crime[i] = max(0ll, (r - l + 1) - t);
}
sort(v.begin(), v.end());
int overlapping[n];
memset(overlapping, 0, sizeof(overlapping));
int dx[n];
memset(dx, 0, sizeof(dx));
int pos = 0;
int maxval = 0;
int numon = 0;
for(int i = -1000 ; i <= 1000 ; i++) {
while(pos != v.size()-1 && v[pos].first <= i + x - 1) {
if(v[pos].second.second == 1) {
dx[v[pos].second.first]++;
numon++;
}else if(v[pos].second.second == -2){
dx[v[pos].second.first]-= 2;
}else {
numon --;
dx[v[pos].second.second ] = 0;
}
pos++;
}
for(int j = 0; j < n; j++) {
overlapping[j] += dx[j];
}
int total = 0;
for(int j = 0; j < n; j++) {
total += min(overlapping[j], crime[j]);
}
if(numon <= k) {
maxval = max(maxval, total);
}
}
cout<<maxval<<'\n';
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |