Pagini recente » Cod sursa (job #2858920) | Cod sursa (job #1692142) | Cod sursa (job #2924059) | Cod sursa (job #2061242) | Cod sursa (job #2501727)
#include<bits/stdc++.h>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct energie{
int E,C;
}G[1002];
int n,w;
bool compare(energie a,energie b)
{
return (a.C<b.C);
}
bool compare1(energie a,energie b)
{
return (a.E<b.E);
}
void ceva()
{
in>>n>>w;
for(int i=1;i<=n;i++)
in>>G[i].E>>G[i].C;
sort(G+1,G+n+1,compare);
}
int solve(int a,int en,int cst)
{
if(a<=n )
{
if(G[a].E==w && en<w )
return G[a].C;
if(en+G[a].E>=w && G[a].E!=w)
return cst+G[a].C;
return solve(a+1,en+G[a].E,cst+G[a].C);
}
if(en>=w)
return cst;
else
return -1;
}
int main()
{
ceva();
int r1=solve(1,0,0);
sort(G+1,G+n+1,compare1);
int r2=solve(1,0,0);
if(r1==r2 && r1==-1)
out<<-1;
else
out<<min(r1,r2);
}