제출 #1278430

#제출 시각아이디문제언어결과실행 시간메모리
1278430k12_khoiCloud Computing (CEOI18_clo)C++17
100 / 100
173 ms1268 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define X first #define Y second const int N=2005; const int MMM=1e5+5; const ll oo=(long double)1e18+1; struct Cloud { int X,Y,Z; } a[N],b[N]; bool cmpY(Cloud x,Cloud y) { return x.Y<y.Y; } int n,request,sum,l; ll res; ll dp[MMM]; int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin >> n; for (int i=1;i<=n;i++) cin >> a[i].X >> a[i].Y >> a[i].Z; cin >> request; for (int i=1;i<=request;i++) cin >> b[i].X >> b[i].Y >> b[i].Z; sort(a+1,a+n+1,cmpY); sort(b+1,b+request+1,cmpY); sum=1e5; for (int i=1;i<=sum;i++) dp[i]=-oo; sum=0; l=n; for (int i=request;i>=1;i--) { while (l>=1 and a[l].Y>=b[i].Y) { sum+=a[l].X; for (int j=sum;j>=a[l].X;j--) dp[j]=max(dp[j],dp[j-a[l].X]-a[l].Z); for (int j=a[l].X-1;j>=1;j--) dp[j]=max(dp[j],(ll)-a[l].Z); l--; } for (int j=0;j+b[i].X<=sum;j++) dp[j]=max(dp[j],dp[j+b[i].X]+b[i].Z); } res=0; for (int i=0;i<=sum;i++) res=max(res,dp[i]); cout << res; }
#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...