#include<bits/stdc++.h>
#define pb push_back
#define fi first
#define se second
#define mp make_pair
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef long double ld;
template <typename T> bool chkmin(T &x,T y){return x>y?x=y,1:0;}
template <typename T> bool chkmax(T &x,T y){return x<y?x=y,1:0;}
ll readint(){
ll x=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n,m,a[1000005],p[1000005],b[1000005],q[1000005];
ll s[1000005],t[1000005],pa[1000005],pb[1000005],mx[4000005],inc[4000005],val[4000005];
bool tag[4000005];
vector<pii> qs[1000005];
void pushdown(int id){
if(tag[id]){
mx[id<<1]=val[id];
mx[id<<1|1]=val[id];
val[id<<1]=val[id];
val[id<<1|1]=val[id];
inc[id<<1]=0;
inc[id<<1|1]=0;
tag[id<<1]=true;
tag[id<<1|1]=true;
inc[id]=0;
tag[id]=false;
}else{
mx[id<<1]+=inc[id];
mx[id<<1|1]+=inc[id];
if(tag[id<<1]) val[id<<1]+=inc[id];
else inc[id<<1]+=inc[id];
if(tag[id<<1|1]) val[id<<1|1]+=inc[id];
else inc[id<<1|1]+=inc[id];
inc[id]=0;
}
}
void rangeadd(int id,int l,int r,int ql,int qr,ll v){
if(l>r||ql>qr||l>qr||r<ql) return;
if(ql<=l&&r<=qr){
mx[id]+=v;
if(tag[id]) val[id]+=v;
else inc[id]+=v;
pushdown(id);
return;
}
pushdown(id);
int mid=(l+r)/2;
rangeadd(id<<1,l,mid,ql,qr,v);
rangeadd(id<<1|1,mid+1,r,ql,qr,v);
mx[id]=max(mx[id<<1],mx[id<<1|1]);
}
void rangeset(int id,int l,int r,int ql,int qr,ll v){
if(l>r||ql>qr||l>qr||r<ql) return;
if(ql<=l&&r<=qr){
mx[id]=v;
val[id]=v;
tag[id]=true;
inc[id]=0;
pushdown(id);
return;
}
pushdown(id);
int mid=(l+r)/2;
rangeset(id<<1,l,mid,ql,qr,v);
rangeset(id<<1|1,mid+1,r,ql,qr,v);
mx[id]=max(mx[id<<1],mx[id<<1|1]);
}
ll query(int id,int l,int r,int qi){
if(l==r) return mx[id];
pushdown(id);
int mid=(l+r)/2;
ll ret=0;
if(qi<=mid) ret=query(id<<1,l,mid,qi);
else ret=query(id<<1|1,mid+1,r,qi);
mx[id]=max(mx[id<<1],mx[id<<1|1]);
return ret;
}
int main() {
n=readint(); m=readint();
for(int i=1;i<=n;i++){
a[i]=readint();
s[i]=readint();
p[i]=readint();
}
for(int i=1;i<=m;i++){
b[i]=readint();
t[i]=readint();
q[i]=readint();
}
for(int i=1;i<=n;i++) pa[i]=pa[i-1]+a[i];
for(int i=1;i<=m;i++) pb[i]=pb[i-1]+b[i];
for(int i=1;i<=n;i++){
if(s[i]<pa[i]) continue;
int l=1,r=m,pos=0;
while(l<=r){
int mid=(l+r)/2;
if(pa[i]+pb[mid]<=s[i]) pos=mid,l=mid+1;
else r=mid-1;
}
qs[i].pb(mp(pos,p[i]));
}
ll res=0;
for(int i=1;i<=m;i++){
if(t[i]<pb[i]) continue;
int l=1,r=n,pos=0;
while(l<=r){
int mid=(l+r)/2;
if(pa[mid]+pb[i]<=t[i]) pos=mid,l=mid+1;
else r=mid-1;
}
res+=q[i];
qs[pos+1].pb(mp(i-1,-q[i]));
}
for(int i=0;i<=n;i++){
sort(qs[i].begin(),qs[i].end());
vector<int> xs(1,m);
for(auto&p:qs[i]){
rangeadd(1,0,m,0,p.first,p.second);
xs.push_back(p.first);
}
sort(xs.begin(),xs.end());
xs.erase(unique(xs.begin(),xs.end()),xs.end());
for(int j=1;j<(int)xs.size();j++){
ll vl=query(1,0,m,xs[j-1]);
ll vr=query(1,0,m,xs[j]);
rangeset(1,0,m,xs[j-1]+1,xs[j],max(vl,vr));
}
}
printf("%lld\n",query(1,0,m,m)+res);
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
308 ms |
82512 KB |
Output is correct |
2 |
Correct |
317 ms |
84432 KB |
Output is correct |
3 |
Correct |
115 ms |
61636 KB |
Output is correct |
4 |
Correct |
209 ms |
74832 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
275 ms |
83916 KB |
Output is correct |
7 |
Correct |
39 ms |
59072 KB |
Output is correct |
8 |
Correct |
56 ms |
52128 KB |
Output is correct |
9 |
Correct |
90 ms |
61720 KB |
Output is correct |
10 |
Correct |
273 ms |
81372 KB |
Output is correct |
11 |
Correct |
64 ms |
61636 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
41564 KB |
Output is correct |
2 |
Correct |
10 ms |
37468 KB |
Output is correct |
3 |
Correct |
10 ms |
41564 KB |
Output is correct |
4 |
Correct |
11 ms |
41564 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
12 ms |
41560 KB |
Output is correct |
7 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
41564 KB |
Output is correct |
2 |
Correct |
10 ms |
37468 KB |
Output is correct |
3 |
Correct |
10 ms |
41564 KB |
Output is correct |
4 |
Correct |
11 ms |
41564 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
12 ms |
41560 KB |
Output is correct |
7 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
41564 KB |
Output is correct |
2 |
Correct |
10 ms |
37468 KB |
Output is correct |
3 |
Correct |
10 ms |
41564 KB |
Output is correct |
4 |
Correct |
11 ms |
41564 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
12 ms |
41560 KB |
Output is correct |
7 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
41564 KB |
Output is correct |
2 |
Correct |
10 ms |
37468 KB |
Output is correct |
3 |
Correct |
10 ms |
41564 KB |
Output is correct |
4 |
Correct |
11 ms |
41564 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
12 ms |
41560 KB |
Output is correct |
7 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
41564 KB |
Output is correct |
2 |
Correct |
10 ms |
37468 KB |
Output is correct |
3 |
Correct |
10 ms |
41564 KB |
Output is correct |
4 |
Correct |
11 ms |
41564 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
12 ms |
41560 KB |
Output is correct |
7 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
308 ms |
82512 KB |
Output is correct |
2 |
Correct |
317 ms |
84432 KB |
Output is correct |
3 |
Correct |
115 ms |
61636 KB |
Output is correct |
4 |
Correct |
209 ms |
74832 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
275 ms |
83916 KB |
Output is correct |
7 |
Correct |
39 ms |
59072 KB |
Output is correct |
8 |
Correct |
56 ms |
52128 KB |
Output is correct |
9 |
Correct |
90 ms |
61720 KB |
Output is correct |
10 |
Correct |
273 ms |
81372 KB |
Output is correct |
11 |
Correct |
64 ms |
61636 KB |
Output is correct |
12 |
Correct |
11 ms |
41564 KB |
Output is correct |
13 |
Correct |
10 ms |
37468 KB |
Output is correct |
14 |
Correct |
10 ms |
41564 KB |
Output is correct |
15 |
Correct |
11 ms |
41564 KB |
Output is correct |
16 |
Correct |
11 ms |
41564 KB |
Output is correct |
17 |
Correct |
12 ms |
41560 KB |
Output is correct |
18 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
19 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
308 ms |
82512 KB |
Output is correct |
2 |
Correct |
317 ms |
84432 KB |
Output is correct |
3 |
Correct |
115 ms |
61636 KB |
Output is correct |
4 |
Correct |
209 ms |
74832 KB |
Output is correct |
5 |
Correct |
11 ms |
41564 KB |
Output is correct |
6 |
Correct |
275 ms |
83916 KB |
Output is correct |
7 |
Correct |
39 ms |
59072 KB |
Output is correct |
8 |
Correct |
56 ms |
52128 KB |
Output is correct |
9 |
Correct |
90 ms |
61720 KB |
Output is correct |
10 |
Correct |
273 ms |
81372 KB |
Output is correct |
11 |
Correct |
64 ms |
61636 KB |
Output is correct |
12 |
Correct |
11 ms |
41564 KB |
Output is correct |
13 |
Correct |
10 ms |
37468 KB |
Output is correct |
14 |
Correct |
10 ms |
41564 KB |
Output is correct |
15 |
Correct |
11 ms |
41564 KB |
Output is correct |
16 |
Correct |
11 ms |
41564 KB |
Output is correct |
17 |
Correct |
12 ms |
41560 KB |
Output is correct |
18 |
Incorrect |
10 ms |
41564 KB |
Output isn't correct |
19 |
Halted |
0 ms |
0 KB |
- |