Pagini recente » Statistici UTCNTractor (UTCN_Andrei_Caldarea_Mihailescu) | Cod sursa (job #1402656) | Cod sursa (job #2235200) | Cod sursa (job #3260976) | Cod sursa (job #1091176)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
FILE *in = fopen("energii.in","r");
FILE *out = fopen("energii.out","w");
const int G = 1001;
struct generator{
int energie;
int cost;
};
generator gen[G];
const int W = 10001;
int matr[2][W];
int gnr, energNec;
int minim = 10001;
void input(){
fscanf(in,"%d%d",&gnr,&energNec);
for(int i = 1; i <= gnr; i++){
fscanf(in,"%d%d",&gen[i].energie,&gen[i].cost);
if(gen[i].energie < minim)
minim = gen[i].energie;
}
}
bool cmp(generator a, generator b){
if(a.energie == b.energie)
return (a.cost < b.cost);
return (a.energie < b.energie);
}
int maxim(int a, int b){
if(a > b)
return a;
return b;
}
void solve(){
sort(gen + 1, gen + gnr + 1, cmp);
for(int i = 1; i <= gnr; i++){
for(int j = 1; j <= minim + energNec + 1; j++)
matr[0][j] = matr[1][j];
for(int j = 1; j <= minim + energNec + 1; j++){
matr[1][j] = maxim(matr[0][j], matr[0][j - gen[i].energie] + gen[i].cost);
if(matr[1][j] >= energNec){
fprintf(out,"%d",matr[1][j]);
exit(1);
}
}
}
}
int main(){
input();
solve();
return 0;
}