Cod sursa(job #1127620)

Utilizator teoionescuIonescu Teodor teoionescu Data 27 februarie 2014 13:08:06
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<queue>
#define abs(x) ((x>0)?(x):(-(x)))
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define ll long long
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int Nmax = 6000;
const int INF = 1<<30;
int N,W;
int A[Nmax];
int main(){
    in>>N>>W;
    for(int i=1;i<=W;i++) A[i]=INF;
    for(int i=1;i<=N;i++){
        int E,C;
        in>>E>>C;
        for(int j=W-1;j>=0;j--){
            if(A[j] && A[j]+C < A[(j+E<W?j+E:W)]){
                A[(j+E<=W?j+E:W)]=A[j]+C;
            }
        }
        if(C < A[(E<W?E:W)]) A[(E<=W?E:W)]=C;
    }
    out<<(A[W]<INF?A[W]:-1)<<'\n';
    return 0;
}