Cod sursa(job #2536400)

Utilizator marius004scarlat marius marius004 Data 1 februarie 2020 21:40:34
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
 
std::ifstream f("energii.in");
std::ofstream g("energii.out");
 
const int NMAX = 50'0000;
const int INF = (1LL << 31) - 1;
 
int G,W,dp[NMAX + 5];
std::pair<int,int>v[NMAX + 5];
 
int main(){
    
    f >> G >> W;
    
    for(int i = 1;i <= G;++i)
        f >> v[i].first >> v[i].second;
    
    for(int i = 1;i <= NMAX;++i)
        dp[i] = INF;
    
    for(int i = 1;i <= G;++i){
        
        for(int j = W; j >= 0;--j)
            if(dp[j] != INF){
                int k = j + v[i].first;
                
                if(k > W)
                    k = W;
                
                dp[k] = std::min(dp[k],dp[j] + v[i].second);
            }
    }
    
    int sol = INF;
    for(int i = W;i <= NMAX;++i)
        sol = std::min(sol,dp[i]);
    
    g << (sol == INF ? -1 : sol);
    
    return 0;
}