Submission #347113

#TimeUsernameProblemLanguageResultExecution timeMemory
347113YJUTwo Dishes (JOI19_dishes)C++14
100 / 100
3204 ms236824 KiB
#include<bits/stdc++.h> #pragma GCC optimize("unroll-loops,no-stack-protector") using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> pll; const ll MOD=1e9+7; const ll MOD2=998244353; const ll N=1e6+5; const ld pi=acos(-1); const ll INF=(1LL<<60); #define SQ(i) ((i)*(i)) #define REP(i,n) for(ll i=0;i<n;i++) #define REP1(i,n) for(ll i=1;i<=n;i++) #define pb push_back #define mp make_pair #define X first #define Y second #define setp setprecision #define lwb lower_bound #define SZ(_a) (ll)_a.size() ll n,m,a[N],s[N],p[N],b[N],t[N],q[N],ans,f[N]; vector<ll> ea[N],lis; set<ll> ms; int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>m; REP1(i,n)cin>>a[i]>>s[i]>>p[i],a[i]+=a[i-1]; REP1(i,m)cin>>b[i]>>t[i]>>q[i],b[i]+=b[i-1]; REP1(i,m){ ea[lwb(a,a+n+1,t[i]-b[i]+1)-a+1].pb(i); } REP1(i,m)f[i]=(i==1?-INF:0)-q[i],ans+=q[i],ms.insert(i),lis.pb(i); REP1(i,n+1){ for(auto j:ea[i])f[j]+=q[j],ans-=q[j],lis.pb(j),ms.insert(j); /*REP1(j,m){ //cout<<f[j]<<(j==m?"\n":" "); if(f[j]<0){f[j+1]+=f[j];f[j]=0;} }*/ //REP1(j,m)cout<<f[j]<<(j==m?"\n":" "); sort(lis.begin(),lis.end()); lis.resize(unique(lis.begin(),lis.end())-lis.begin()); for(auto j:lis){ auto l=ms.lwb(j),r=l; ll lst=0; while(r!=ms.end()){ f[*r]+=lst; if(f[*r]>=0)break; lst=f[*r],f[*r++]=0; } ms.erase(l,r); } //REP1(j,m)cout<<f[j]<<(j==m?"\n":" "); lis.clear(); if(i==n+1)break; ll id=lwb(b+1,b+m+1,s[i]-a[i]+1)-b; if(s[i]-a[i]<b[0])id=0; f[0]+=p[i];f[id]-=p[i]; if(id)ms.insert(id),lis.pb(id); } REP(i,m+1)ans+=f[i]; cout<<ans<<"\n"; return 0; }
#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...