36 lines
		
	
	
		
			778 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			778 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <algorithm>
 | |
| #include <iostream>
 | |
| using namespace std;
 | |
| 
 | |
| const int MAX_N=10000+5;
 | |
| int sh,sm,eh,em,W,n;
 | |
| int w[MAX_N],v[MAX_N],c[MAX_N];
 | |
| int dp[MAX_N];
 | |
| 
 | |
| int main(){
 | |
|     ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
 | |
|     char _;
 | |
|     cin>>sh>>_>>sm>>eh>>_>>em>>n;
 | |
| 
 | |
|     W =  (eh*60+em)-(sh*60+sm);
 | |
|     // cout<<W<<endl;
 | |
| 
 | |
|     for(int i=1;i<=n;i++){
 | |
|         cin>>w[i]>>v[i]>>c[i];
 | |
|     }
 | |
| 
 | |
|     for(int i=1;i<=n;i++){
 | |
|         if(c[i]==0){
 | |
|             for(int j=w[i];j<=W;j++){
 | |
|                 dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
 | |
|             }
 | |
|         }else{
 | |
|             for(int j=W;j>=w[i];j--){
 | |
|                 for(int k=1;k*w[i]<=j&&k<=c[i];k++){
 | |
|                     dp[j]=max(dp[j],dp[j-k*w[i]]+v[i]*k);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     cout<<dp[W]<<endl;
 | |
| } |