Pagini recente » Cod sursa (job #2507112) | Cod sursa (job #1314142) | Cod sursa (job #1333480) | Cod sursa (job #2829800) | Cod sursa (job #1825802)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int N,W,M,Sol = 2000000000;
int X[100];
int E[1000],C[1000];
void Read()
{
fin>>N>>W;
for(int i = 1; i <= N; ++i)
fin>>E[i]>>C[i];
}
int valid(int k)
{
if(k > 1 && X[k] <= X[k-1])
return 0;
return 1;
}
int solutie(int k)
{
return (k == M);
}
void Compare(int k)
{
int S = 0;
for(int i = 1; i <= k; ++i)
S += E[X[i]];
if(S >= W)
{
S = 0;
for(int i = 1; i <= k; ++i)
S += C[X[i]];
Sol = min(Sol,S);
}
}
void Back(int k)
{
for(int i = 1; i <= N; ++i)
{
X[k] = i;
if(valid(k))
if(solutie(k))
Compare(k);
else
Back(k+1);
}
}
int main()
{
Read();
for(M = 1; M <= N; M++)
{
Back(1);
}
fout << Sol;
return 0;
}