Pagini recente » Cod sursa (job #435537) | Cod sursa (job #2538474) | Cod sursa (job #1101133) | Cod sursa (job #1102014) | Cod sursa (job #575140)
Cod sursa(job #575140)
#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(15000); viz.resize(15000);
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;
}