Pagini recente » cosmin96 | Cod sursa (job #5926) | Cod sursa (job #2600434) | Cod sursa (job #575136)
Cod sursa(job #575136)
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
struct generator {
int energ, cost;
};
vector<generator> A;
vector<int> D;
vector<bool> viz;
int G, W, sol=1<<30;
int cmp(generator a, generator b) {
return a.cost < b.cost;
}
int main() {
int i, j;
f>>G>>W;
A.resize(G+1); D.resize(W+1); viz.resize(W+1);
sort(A.begin()+1,A.end(),cmp);
fill(D.begin(),D.end(),1<<30);
for(i=1; i<=G; i++)
f>>A[i].energ>>A[i].cost;
D[0]=0;
for(i=1; i<=G; i++) {
fill(viz.begin(),viz.end(),false);
for(j=0; j<W; j++)
if(!viz[j] && D[j+A[i].energ]>D[j]+A[i].cost) {
D[j+A[i].energ]=D[j]+A[i].cost;
viz[j+A[i].energ]=1;
if(j+A[i].energ>=W && D[j+A[i].energ]<sol)
sol=D[j+A[i].energ];
}
}
if(sol==1<<30)
g<<"-1\n";
else
g<<sol<<"\n";
f.close(); g.close();
return 0;
}