Pagini recente » Cod sursa (job #765559) | Cod sursa (job #2222251) | Cod sursa (job #2378133) | Cod sursa (job #2654306) | Cod sursa (job #938096)
Cod sursa(job #938096)
#include <fstream>
#define NMAX 1009
#define GMAX 10009
using namespace std;
ifstream f("energii.in"); ofstream g("energii.out");
int N, S, G[NMAX], P[NMAX];
int DP[GMAX + NMAX * 5];
inline void read_Data() {
f >> N >> S;
for(int i = 1; i <= N; ++i) f >> P[i] >> G[i];
}
inline void solve() {
int minim = 9999999999999;
bool ok = false;
for(int i = 1; i <= N; ++i)
for(int j = S; j >= 0; --j) {
if(j + P[i] > S && minim > j + P[i])
minim = j + P[i];
if(DP[j] + G[i] < DP[j + P[i]])
DP[j + P[i]] = DP[j] + G[i];
}
if(minim == 9999999999999) g << "-1\n";
else
g << min(minim, (DP[S] > 0 ? DP[S] : 999999999)) << '\n';
}
int main() {
read_Data();
solve();
g.close();
return 0;
}