Cod sursa(job #1103507)

Utilizator muresan_bogdanMuresan Bogdan muresan_bogdan Data 9 februarie 2014 17:21:45
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

int g[5001], p[5001], freq[10001], i, j, N, G, maxi;

int main() {
    fin >> N >> G;
    maxi = 0;
    for(i = 0; i < N; i++) {
        fin >> g[i] >> p[i];
        for(j = G; j > 0; j--) {
            if(freq[j] != 0) {
                if(j + g[i] <= G) {
                    if(freq[j + g[i]] < p[i] + freq[j]) {
                        freq[j + g[i]] = p[i] + freq[j];
                        if(freq[j + g[i]] > maxi) {
                            maxi = freq[j + g[i]];
                        }
                    }
                }
            }
            if(j == g[i]) {
                if(freq[j] < p[i]) {
                    freq[j] = p[i];
                    if(freq[j] > maxi) {
                        maxi = freq[j];
                    }
                }
            }
        }
    }
    fout << maxi;
    fin.close();
    fout.close();
    return 0;
}