Cod sursa(job #1481004)

Utilizator elevenstrArina Raileanu elevenstr Data 3 septembrie 2015 17:07:10
Problema Energii Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
//http://www.infoarena.ro/problema/energii
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int e[2000],c[2000];
int g[1000000];
int n;

int main()
{  int i,j,w,s=0,m=0,st,dr,med;
    in>>n;
in>>w;
for(i=1;i<=n;i++)
{in>>e[i]>>c[i];
 s=s+e[i];
 m=m+c[i];}
if(s<w)out<<-1;
else
    {for(i=1;i<=n;i++)
    for(j=m;j>=0;j--)
    g[j+c[i]]=max(g[j+c[i]], g[j]+e[i]);

st=0;
dr=m;
while(st<dr)
{
    med=(st+dr)/2;
    if(g[med]>=w) dr=med-1;
    if(g[med]<w)st=med+1;
}
out<<st;
}


    return 0;
}