Pagini recente » Cod sursa (job #3270507) | Cod sursa (job #747143) | Cod sursa (job #2266478) | Cod sursa (job #2500054) | Cod sursa (job #92191)
Cod sursa(job #92191)
#include <fstream>
#include <iostream>
using namespace std;
#define N_MAX 1001
#define W_MAX 5001
#define FIN "energii.in"
#define FOUT "energii.out"
int g,w,cmin = W_MAX,a[N_MAX],b[N_MAX],s,c,i,j,k,t;
int main()
{
ifstream fin(FIN);
ofstream fout(FOUT);
fin >> g >> w;
for(i = 0; i < g; ++i){
fin >> a[i] >> b[i];
}
if(a[0] >= w)
cmin = b[0];
for(i = 0; i < g; ++i)
for(j = i+1; j < g; ++j)
if(a[i] > a[j]){
k = a[i],a[i] = a[j],a[j] = k;
t = b[i],b[i] = b[j],b[j] = t;
}
//for(i = 0; i < g; ++i)
// cout << a[i] << " " << b[i] << endl;
for(i = 0; i < g; ++i,s = c = 0)
{
s+=a[i], c+=b[i],k = 1;
while(i+k <= g-1){
for(j = i+k; j < g; ++j)
{
if( a[j] >= w ){
if(b[j] < cmin)
cmin = b[j];
}
else{
c += b[j];s += a[j];
if(s >= w){
if(c < cmin)
cmin = c,s = c = 0;
}
else
if(i == g-2 && j == g-1 && cmin == W_MAX)
cmin = -1;
}
}
++k,s = a[i],c = b[i];
}
}
fout << cmin;
return 0;
}