Submission #1150801

#TimeUsernameProblemLanguageResultExecution timeMemory
1150801fatman87878Two Dishes (JOI19_dishes)C++20
5 / 100
168 ms54284 KiB
#include<bits/stdc++.h> using namespace std; #define IOS cin.tie(nullptr)->sync_with_stdio(0),cin.exceptions(cin.failbit); #define lb(x) (x)&-(x) #define all(x) (x).begin(),(x).end() #define ll long long constexpr int maxN=1e6+5; int n,m; ll a[maxN],b[maxN],s[maxN],t[maxN],p[maxN],q[maxN],ans; vector<pair<ll,int>> opt[maxN]; map<int,ll> dp; int main(){ IOS cin>>n>>m; for(int i = 1;i<=n;i++)cin>>a[i]>>s[i]>>p[i],a[i]+=a[i-1]; for(int i = 1;i<=m;i++)cin>>b[i]>>t[i]>>q[i],b[i]+=b[i-1]; for(int i = 1;i<=n;i++)if(a[i]<=s[i]){ int tar = upper_bound(b,b+m+1,s[i]-a[i])-b; ans+=p[i]; opt[i].emplace_back(-p[i],tar); } for(int i = 1;i<=m;i++)if(b[i]<=t[i]){ if(b[i]+a[n]<=t[i]){ ans+=q[i]; continue; } int tar = lower_bound(a,a+n+1,t[i]-b[i])-a; opt[tar].emplace_back(q[i],i); } dp.emplace(m+1,1e18); for(int i = 0;i<=n;i++){ sort(all(opt[i]),greater()); for(auto [val,idx]:opt[i]){ for(auto it = dp.lower_bound(idx);val<0;it = dp.erase(it)) val += it->second,idx = it->first; dp[idx]+=val; } } for(;dp.begin()->first!=m+1;dp.erase(dp.begin()))ans+=dp.begin()->second; cout<<ans<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...