#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <set>
#include <vector>
#define ll long long
#define START false
#define END true
#define pb push_back
using namespace std
;
const int N
= 2e5+100;
struct Node
{
ll st
, len
;
bool dir
;
Node(ll l
, bool flag
, ll ti
){
st
= l
, dir
= flag
, len
= ti
;
}
bool operator<(const Node
& b
) const{
if(st
!= b
.st
) return st
< b
.st
;
else return dir
< b
.dir
;
}
};
vector
<Node
> vec
;
multiset
<ll
> mts
;
int n
;
int main(){
scanf("%d", &n
);
for(int i
= 1; i
<= n
; i
++){
ll l
, r
, t
;
scanf("%lld%lld%lld", &l
, &r
, &t
);
vec
.pb(Node(l
+t
, START
, t
));
vec
.pb(Node(r
, END
, t
));
}
ll ans
, pre
;
ans
= pre
= 0;
sort(vec
.begin(), vec
.end())
for(int i
= 0; i
< vec
.size(); i
++){
Node v
= vec
[i
];
if(!mts
.empty()){
ll tmp
= (v
.st
-pre
)/(*mts
.begin());
ans
+= tmp
;
pre
+= tmp
*(*mts
.begin());
}
if(v
.dir
== END
){
mts
.erase(mts
.find(v
.len
));
}
else{
if(pre
+v
.len
<=v
.st
){
ans
+= 1;
pre
= v
.st
;
}
mts
.insert(v
.len
);
}
}
printf("%lld\n", ans
);
return 0;
}
转载请注明原文地址:https://tech.qufami.com/read-10952.html