Cod sursa(job #927618)

Utilizator zvonTutuldunsa Voronokda zvon Data 25 martie 2013 21:42:46
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
#include<fstream>

int gasire(int t[], int s)
{   int max=0;
    for (int i=1; i<=s;i++) {if (t[i]>max) max=t[i];}
     return(max);}

using namespace std;
struct obiect { short masa; int pret;};
int main(){
ifstream fil("rucsac.in");
int cap,n;  fil >> n >> cap;
obiect a[n+1]; int b[cap+1];
for (int i=1; i<=n; i++) {fil >> a[i].masa >> a[i].pret;} fil.close();
for (int i=1; i<=cap; i++) b[i]=-1; b[0]=0;

for (int j=1; j<=n; j++) {
for (int i=cap; i>=0; i--) {
    if (b[i]>=0) {if (a[j].masa+i<=cap) {
    if (b[a[j].masa+i]<a[j].pret+b[i]) { b[a[j].masa+i]=a[j].pret+b[i];}            
                 }
    }
    }}
ofstream dumb("rucsac.out");

dumb << gasire(b,cap); dumb.close();

cin.ignore(2);
return(0);
}