Pagini recente » Cod sursa (job #3032917) | Cod sursa (job #2264279) | Cod sursa (job #1460904) | Cod sursa (job #689906) | Cod sursa (job #2959060)
#include <bits/stdc++.h>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
short n,w,i,x,y;
bool ok;
int cm=INT_MAX;
struct c
{
short a;
int b;
};
queue <c> q,q1;
int main()
{
in>>n>>w;
for(i=1; i<=n; ++i)
{
in>>x>>y;
if(x==w)
cm=min(cm,int(y));
else if(x<w)
{
if(ok==0)
{
while(!q.empty())
{
short z=q.front().a+x;
int v=q.front().b+y;
q1.push({z-x,v-y});
if(z<w)
q1.push({z,v});
else if(z>=w)
cm=min(cm,v);
q.pop();
}
q1.push({x,y});
ok=1;
}
else
{
while(!q1.empty())
{
short z=q1.front().a+x;
int v=q1.front().b+y;
q.push({z-x,v-y});
if(z<w)
q.push({z,v});
else if(z>=w)
cm=min(cm,v);
q1.pop();
}
q.push({x,y});
ok=0;
}
}
}
if(cm<2000000000)
out<<cm;
else out<<-1;
}