Cod sursa(job #1536602)
| Utilizator | Data | 26 noiembrie 2015 14:03:44 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.24 kb |
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int v[10000],gr[10000];
int main()
{
int n,lim,gre,val,mi,ci,MI;
f>>n;
f>>lim;
for(int i=1;i<=n;i++)
{
f>>gr[i];
f>>v[i];
}
do
{
gre=0;
val=0;
for(int i=1;i<=n;i++)
{
if(gr[i]!=-1)
{
val=val+v[i];
gre=gre+gr[i];
}
}
if(gre>lim)
{
mi=INT_MAX;
for(int i=1;i<=n;i++)
{
if(v[i]<mi)
mi=v[i];
}
MI=INT_MIN;
for(int i=1;i<=n;i++)
{
if(v[i]==mi)
if(gr[i]>MI)
MI=gr[i];
}
for(int i=1;i<=n;i++)
{
if(gr[i]==MI && v[i]==mi)
ci=i;
}
for(int i=ci;i<n;i++)
{
v[i]=v[i+1];
gr[i]=gr[i+1];
}
n--;
}
}while(gre>lim);
g<<val;
return 0;
}
