Pagini recente » Cod sursa (job #3148427) | Cod sursa (job #1072082) | Cod sursa (job #2353675) | Cod sursa (job #3206391) | Cod sursa (job #2116611)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
int val[1111],gr[1111],x[10000];
int main()
{int n,gmax,p=0,pmax=0,g=0;
f>>n>>gmax;
for(int i=1;i<=n;i++)
f>>gr[i]>>val[i];
bool s;
do{s=1;
for(int i=1;i<n;++i)
if(gr[i]>gr[i+1])
{
swap(gr[i],gr[i+1]);
swap(val[i],val[i+1]);
s=0;
}
}while(!s);
int i=1;
while(i)
{
x[i]++;
if(x[i]>n)
{g-=gr[x[--i]];p-=val[x[i]];}
else
if(g+gr[x[i]]<gmax)
{
g+=gr[x[i++]];
x[i]=x[i-1];
p+=val[x[i]];
if(p>pmax)
pmax=p;
}
else if(g+gr[x[i]]>gmax)
{g-=gr[x[--i]];p-=val[x[i]];}
else
if(p+val[x[i]]>pmax)
pmax=p+val[x[i]];
}
cout<<pmax;
return 0;
}