Pagini recente » Cod sursa (job #2175756) | Cod sursa (job #1209795) | Cod sursa (job #2822383) | Cod sursa (job #2519025) | Cod sursa (job #2356909)
#include <iostream>
#include <fstream>
#include <set>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int a[10005][1015],n,E,g[100005],c[100005];
set<int, greater<int> > S;
void Citire()
{
set<int, greater<int> >::iterator it;
int i,j,emax=0,w,minim=10000005;
for(i=0; i<=10004; ++i)
for(j=0; j<=1004; ++j)
a[i][j]=100005;
fin>>n>>E;
for(i=1; i<=n; ++i)
{
fin>>g[i]>>c[i];
a[g[i]][i]= min(c[i],a[g[i]][i-1]);
for(it=S.begin(); it!=S.end(); ++it)
{
w=*it;
if(w+g[i]<10005)
a[w+g[i]][i]=min( a[w+g[i]][i-1], a[w][i-1]+c[i] );
if(w+g[i]<10005)
S.insert(w+g[i]);
}
S.insert(g[i]);
}
for(i=E; i<=10004; ++i)
minim=min(minim, a[i][n]);
fout<<minim;
}
int main()
{
Citire();
return 0;
}