Cod sursa(job #1720038)

Utilizator alexsuciuAlex Suciu alexsuciu Data 21 iunie 2016 01:50:12
Problema Problema rucsacului Scor 50
Compilator java Status done
Runda Arhiva educationala Marime 1.48 kb

import java.io.File;
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 *
 * @author Alexandru
 */
public class Main {

    int n, G;
    int g[], p[];
    int c[][];
    
    public void citire() throws Exception {
        Scanner sc = new Scanner(new FileInputStream("rucsac.in"));
        n = sc.nextInt();
        G = sc.nextInt();
        g = new int[n+1];
        p = new int[n+1];
        c = new int[G+1][n+1];
        for(int i = 1; i <= n; i++) {
            g[i] = sc.nextInt();
            p[i] = sc.nextInt();
        }
        sc.close();
    }
    
    public void rucsac() throws Exception {
        for(int i = 0; i <= G; i++)
            c[i][0] = 0;
        for(int i = 0; i <= n; i++) {
            c[0][i] = 0;
        }
        for(int greutate = 1; greutate <= G; greutate ++) {
            for(int i = 1; i <= n; i++)
                if (greutate < g[i])
                    c[greutate][i] = c[greutate][i-1];
                else {
                    c[greutate][i] = Math.max(p[i] + c[greutate - g[i]][i-1], c[greutate][i-1]);
                }
        }
        
        PrintWriter writer = new PrintWriter(new File("rucsac.out"));
        writer.print(c[G][n]);
        writer.close();
    }
    
    public static void main(String[] args) throws Exception {
        
        Main pd_rucsac = new Main();
        pd_rucsac.citire();
        pd_rucsac.rucsac();
        
    }
    
}