Pagini recente » Cod sursa (job #2671445) | Cod sursa (job #1791594) | Cod sursa (job #681942) | Cod sursa (job #2631540) | Cod sursa (job #2541356)
#include <fstream>
#include <algorithm>
#define NM 5006
#define oo 2e9
#define pir pair < int,int >
#define pt first
#define cst second
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n,gr,i,s,j;
pir v[NM];
struct vectr{
int vec[1003];
};
vectr a,b;
bool cmp( pir a, pir b ){
if(a.pt!=b.pt) return a.pt<b.pt;
return a.cst<b.cst;
}
int main()
{
f>>n;
f>>gr;
for(i=1;i<=n;i++)
{ f>>v[i].pt>>v[i].cst; s+=v[i].pt; }
if(s<gr) {
g<<-1<<'\n'; return 0;
}
// sort(v+1,v+n+1,cmp);
for(i=1;i<=gr;i++) { a.vec[i]=oo; b.vec[i]=oo; }
for(i=1;i<=n;i++){
for(j=1;j<=gr;j++){
if(j<=v[i].pt) b.vec[j]=min(a.vec[j],v[i].cst);
else b.vec[j]=min(a.vec[j],a.vec[j-v[i].pt]+v[i].cst);
}
a=b;
}
if(b.vec[gr]!=oo) g<<b.vec[gr];
else g<<-1;
return 0;
}