Pagini recente » Cod sursa (job #2631427) | Cod sursa (job #3197376) | preoni2008-runda1-11-12 | Cod sursa (job #3290894) | Cod sursa (job #1097608)
#include <fstream>
#include <cstdio>
#include <algorithm>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct g{ int e; int c;} gs[1001];
int W,n;
bool compare(g g1, g g2)
{
if(g1.c==g2.c)
return g1.e>g2.e;
return g1.c<g2.c;
}
int main()
{
int i,s=0,cm,q=0;
in>>n>>W;
for(i=1;i<=n;i++)
{
in>>gs[i].e>>gs[i].c;
s+=gs[i].e;
q+=gs[i].c;
}
if(s<W)
{
out<<"-1";
return 0;
}
if(s==W)
{
out<<q;
return 0;
}
sort(gs+1,gs+n,compare);
int found=0;
for(i=1;i<=n;i++)
{
s=gs[i].e;
int sc=gs[i].c;
if(gs[i].e>=W)
{
if(found==0)
{
cm=gs[i].c;
found++;
}
if(gs[i].c<cm)
{
cm=gs[i].c;
}
}
else
{
int j=i;
while(s<W&&++j<=n)
{
s+=gs[j].e;
sc+=gs[j].c;
}
if(s>=W)
{
if(found==0)
{
cm=sc;
found++;
}
if(sc<cm)
{
cm=sc;
}
}
}
}
out<<cm;
return 0;
}