fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll=long long;
  4.  
  5. int main(){
  6. int n; cin>>n;
  7. const int MX=2005;
  8. ll dp[MX];
  9. fill(dp,dp+MX,LLONG_MIN);
  10. dp[0]=0;
  11.  
  12. ll phoneMax=0; // 휴대폰 직접 연결 후보 최대 즐거움
  13. for(int i=0;i<n;i++){
  14. int a,b; cin>>a>>b;
  15. if(a==0){
  16. phoneMax=max(phoneMax,(ll)b);
  17. } else {
  18. for(int j=MX-1;j>=0;j--){
  19. if(dp[j]!=LLONG_MIN){
  20. int nj=j+a-1;
  21. nj=min(nj,MX-1);
  22. dp[nj]=max(dp[nj],dp[j]+b);
  23. }
  24. }
  25. }
  26. }
  27.  
  28. ll ans=LLONG_MIN;
  29. for(int i=0;i<MX;i++) ans=max(ans,dp[i]+phoneMax);
  30. cout<<ans<<"\n";
  31. }
Success #stdin #stdout 0.01s 5328KB
stdin
15
1 -4034
1 3406
0 6062
4 -6824
0 9798
0 4500
0 -1915
1 2137
0 9786
0 7330
0 -9365
2 2730
0 -5797
0 6129
0 8925
stdout
18071