Pagini recente » Cod sursa (job #233827) | Cod sursa (job #1958276) | Cod sursa (job #888316) | Cod sursa (job #439337) | Cod sursa (job #575153)
Cod sursa(job #575153)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
struct generator {
int energ, cost;
};
int W, G, sol(1<<30);
vector<bool> viz;
vector<generator> A;
vector<int> D;
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(16000); viz.resize(16000);
for(i=1; i<=G; i++)
f>>A[i].energ>>A[i].cost;
sort(A.begin()+1,A.end(),cmp);
fill(D.begin(),D.end(),1<<30);
D[0]=0;
for(i=1; i<=G; i++) {
for(j=0; j<W; j++)
if(!viz[j] && D[j]+A[i].cost<D[j+A[i].energ]) {
viz[j+A[i].energ]=1;
D[j+A[i].energ]=D[j]+A[i].cost;
if(j+A[i].energ>=W && D[j+A[i].energ]<sol)
sol=D[j+A[i].energ];
}
fill(viz.begin(),viz.end(),false);
}
if(sol==1<<30)
g<<-1<<"\n";
else
g<<sol<<"\n";
f.close(); g.close();
return 0;
}