Cod sursa(job #2516445)

Utilizator betybety bety bety Data 31 decembrie 2019 15:12:58
Problema Energii Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
///n-10^3; w-5*10^3; e,cost-10^4
#include <fstream>
#include <set>
#define inf 0x7fffffff
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int lim=5e3+3;
int gr[lim];
int main()
{
    ios_base::sync_with_stdio(false);
    in.tie(0),out.tie(0);
    int n,w,minn=inf;
    in>>n>>w;
    set<int> s;
    s.insert(0);
    gr[0]=0;
    for(int i=1;i<=w-1;++i)
        gr[i]=inf;
    for(int i=1;i<=n;++i)
    {
        int e,cost;
        in>>e>>cost;
        auto start=s.begin(),stop=s.end();
        do
        {
            --stop;
            int engie=*stop;
            if(engie+e<w)
                gr[engie+e]=min(gr[engie+e],gr[engie]+cost),s.insert(engie+e);
            else if(gr[engie]+cost<minn)
                minn=gr[engie]+cost;
        }while(start!=stop);
    }
    if(minn==inf)
    {
        out<<-1;
        return 0;
    }
    out<<minn;
    return 0;
}