#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define ll int
typedef pair<int,int> pi;
typedef vector <ll> vi;
typedef vector <pi> vpi;
typedef pair<pi, ll> pii;
typedef set <ll> si;
typedef long double ld;
#define f first
#define s second
#define mp make_pair
#define FOR(i,s,e) for(int i=s;i<=int(e);++i)
#define DEC(i,s,e) for(int i=s;i>=int(e);--i)
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define lbd(x, y) lower_bound(all(x), y)
#define ubd(x, y) upper_bound(all(x), y)
#define aFOR(i,x) for (auto i: x)
#define mem(x,i) memset(x,i,sizeof x)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MOD 1000000007
#define maxn 2000010
//~ #define getchar_unlocked _getchar_nolock
int N,K,X,l,r,t;
inline int readInt() {
int x = 0;
char ch = getchar_unlocked();
while (ch < '0' || ch > '9') ch = getchar_unlocked();
while (ch >= '0' && ch <= '9'){
x = (x << 3) + (x << 1) + ch - '0';
ch = getchar_unlocked();
}
return x;
}
struct node{ // All adds before sets
int s,e,m,v;
node *l=nullptr,*r;
bool lazyset = 0;
int lazy = 0;
node (int ss,int ee){
s = ss; e = ee; m = (s + e) / 2;
}
void prop(){
if (s == e) return;
if (l == nullptr){
l = new node(s,m); r = new node(m+1,e);
}
if (lazy){
l->lazy += lazy; r->lazy += lazy;
l->v += lazy * (l->e - l->s + 1); r->v += lazy * (r->e - r->s + 1);
}
if (lazyset){
l->lazyset = r->lazyset = 1;
l->v = r->v = 0;
}
lazy = lazyset = 0;
}
void upd(int a,int b,int c){
prop();
if (a <= s && e <= b){
v += c * (e - s + 1); lazy += c;
}else if (a > e || s > b) return;
else{
l->upd(a,b,c); r->upd(a,b,c);
v = l->v + r->v;
}
}
void set(int a,int b){
prop();
if (v == 0) return;
if (a <= s && e <= b){
lazyset = 1; v = 0;
}else if (a > e || s > b) return;
else{
l->set(a,b); r->set(a,b);
v = l->v + r->v;
}
}
int qry(int a,int b){
prop();
if (v == 0) return 0;
if (a <= s && e <= b) return v;
else if (a > e || s > b) return 0;
else return l->qry(a,b) + r->qry(a,b);
}
}*root;
int32_t main() {
fast;
N = readInt(); K = readInt(); X = readInt();
//~ cin >> N >> K >> X;
root = new node(1,1e9);
map <int,int> mp; vi vect;
FOR(i,1,N){
l = readInt(); t = readInt(); r = readInt();
//~ cin >> l >> t >> r;
if (l + t <= r){
vect.pb(l+t);
root->upd(l + t, r, 1);
}
mp[l]++; mp[r+1]--;
vect.pb(l); vect.pb(r);
vect.pb(l-X+1); vect.pb(r-X+1);
}
int cur = 0, pre = 1e9+10; // previous one < K
aFOR(i,mp){
if (cur < K && cur + i.s >= K){
root->set(pre, i.f-1);
}
cur += i.s;
//~ cout << "VAL: " << i.f << ' ' << cur << '\n';
if (cur < K) pre = min(pre, i.f);
else pre = 1e9+10;
}
if (cur < K) root->set(pre, 1e9);
int ans = 0;
aFOR(i,vect) if (i >= 1){
//~ cout << i << ' ' << root->qry(i, i + X - 1) << '\n';;
ans = max(ans, root->qry(i, i + X-1));
}
cout << ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
316 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
0 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
1 ms |
332 KB |
Output is correct |
10 |
Correct |
1 ms |
316 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
316 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
0 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
1 ms |
332 KB |
Output is correct |
10 |
Correct |
1 ms |
316 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
3 ms |
460 KB |
Output is correct |
13 |
Correct |
3 ms |
460 KB |
Output is correct |
14 |
Correct |
3 ms |
460 KB |
Output is correct |
15 |
Correct |
3 ms |
460 KB |
Output is correct |
16 |
Correct |
2 ms |
476 KB |
Output is correct |
17 |
Correct |
3 ms |
460 KB |
Output is correct |
18 |
Correct |
4 ms |
460 KB |
Output is correct |
19 |
Correct |
2 ms |
460 KB |
Output is correct |
20 |
Correct |
2 ms |
460 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
316 KB |
Output is correct |
3 |
Correct |
1 ms |
332 KB |
Output is correct |
4 |
Correct |
1 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
0 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
1 ms |
332 KB |
Output is correct |
10 |
Correct |
1 ms |
316 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
3 ms |
460 KB |
Output is correct |
13 |
Correct |
3 ms |
460 KB |
Output is correct |
14 |
Correct |
3 ms |
460 KB |
Output is correct |
15 |
Correct |
3 ms |
460 KB |
Output is correct |
16 |
Correct |
2 ms |
476 KB |
Output is correct |
17 |
Correct |
3 ms |
460 KB |
Output is correct |
18 |
Correct |
4 ms |
460 KB |
Output is correct |
19 |
Correct |
2 ms |
460 KB |
Output is correct |
20 |
Correct |
2 ms |
460 KB |
Output is correct |
21 |
Runtime error |
959 ms |
524292 KB |
Execution killed with signal 9 |
22 |
Halted |
0 ms |
0 KB |
- |