Pagini recente » Cod sursa (job #3005476) | Cod sursa (job #3042178) | Cod sursa (job #362203) | Cod sursa (job #2100290) | Cod sursa (job #582457)
Cod sursa(job #582457)
#include <cstdio>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
#define inf 1<<30
#define N 1024
#define e first
#define c second
pair <int , int > v[N];
int main ()
{
ifstream in ("energii.in");
freopen ("energii.out","w",stdout);
int n,k;
in>>n>>k;
for(int i=1;i<=n;++i)
in>>v[i].e>>v[i].c;
in.close ();
vector<int> cs(k+1,-1);
cs[0]=0;
int m=inf;
for(int i=1;i<=n;++i)
for(int j=k;j>-1;--j)
if(cs[j]>-1){
if ( j+v[i].e>k && cs[j]+v[i].c<m )
m=v[i].c+cs[j];
if ( k>=j+v[i].e && (cs[j+v[i].e]==-1 || cs[j]+v[i].c<cs[j+v[i].e]) )
cs[j+v[i].e]=cs[j]+v[i].c;
}
if(m==inf){
printf("%d\n",cs[k]);
exit(0);
}
if(cs[k]==-1){
printf("%d\n",m);
exit(0);
}
printf("%d\n",min(m,cs[k]));
return 0;}