Submission #1161122

#TimeUsernameProblemLanguageResultExecution timeMemory
1161122AlgorithmWarriorCloud Computing (CEOI18_clo)C++20
100 / 100
213 ms1260 KiB
#include <bits/stdc++.h> using namespace std; int const MAX=4005; int const MAXC=1e5+5; long long const INF=1e18; struct event{ int cap,crt,val,type; bool operator<(event ot){ if(crt!=ot.crt) return crt>ot.crt; return type<ot.type; } }events[MAX]; int n,m; int total; void read(){ cin>>n; int i; for(i=1;i<=n;++i){ cin>>events[i].cap>>events[i].crt>>events[i].val; events[i].type=1; } cin>>m; for(i=n+1;i<=n+m;++i){ cin>>events[i].cap>>events[i].crt>>events[i].val; events[i].type=2; } total=n+m; sort(events+1,events+total+1); } long long dp[MAXC]; void maxself(long long& x,long long val){ if(x<val) x=val; } void get_dp(){ int i; for(i=1;i<MAXC;++i) dp[i]=-INF; int j; int sum=0; for(j=1;j<=total;++j){ auto [cap,crt,val,type] = events[j]; if(type==1){ sum+=cap; for(i=sum;i>=cap;--i) maxself(dp[i],dp[i-cap]-val); } else{ for(i=0;i<=sum-cap;++i) maxself(dp[i],dp[i+cap]+val); } } } long long get_answer(){ long long answer=0; int i; for(i=0;i<MAXC;++i) maxself(answer,dp[i]); return answer; } int main() { read(); get_dp(); cout<<get_answer(); 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...