Pagini recente » Cod sursa (job #772945) | Cod sursa (job #822095) | Cod sursa (job #2602458) | Statistici Dragos Pasolea (gameblaster) | Cod sursa (job #2163640)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct gen{
int c;
int e;
};
int n,m,i,j,k,e;
int a[3][10001];
const int nmax=10001;
gen t[1001];
bool compare(gen a, gen b)
{
return a.e<b.e||(a.e==b.e&&a.c<b.c);
}
int pp(int a, int b)
{
if(a<e&&b<e) return max(a,b);
if(a<e&&b>=e) return b;
if(b<e&&a>=e) return a;
return min(a,b);
}
int main(){
fin>>n;
fin>>e;
for(i=1;i<=n;i++) fin>>t[i].e>>t[i].c;
sort(t+1,t+n+1,compare);
for(i=t[1].e;i<e;i++) a[1][i]=t[1].c;
int s=0;
for(i=1;i<=n;i++) s+=t[i].e;
if(s<e) fout<<"-1";
else{
for(i=2;i<=n;i++)
{
for(j=1;j<=e;j++)
if(j>=t[i].e) a[2][j]=pp(a[1][j],a[1][j-t[i].e]+t[i].c);
else a[2][j]=a[1][j];
for(j=1;j<=e;j++) a[1][j]=a[2][j];
}
fout<<a[2][e];}
return 0;
}