Cod sursa(job #1783176)

Utilizator cella.florescuCella Florescu cella.florescu Data 18 octombrie 2016 20:37:46
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda cerculdeinfo-lectia3-programaredinamica1 Marime 0.61 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5001
#define MAXG 10001
int gr[MAXN], p[MAXN], v[MAXG];
int main(){
    FILE *fin, *fout;
    int n, g, max, i, j;
    fin=fopen("rucsac.in", "r");
    fscanf(fin, "%d%d", &n, &g);
    for(i=1; i<=n; i++)
      fscanf(fin, "%d%d", &gr[i], &p[i]);
    max=0;
    for(i=1; i<=n; i++)
      for(j=g-gr[i]; j>=0; j--)
        if(v[j+gr[i]]<v[j]+p[i]){
          v[j+gr[i]]=v[j]+p[i];
          if(v[j+gr[i]]>max)
            max=v[j+gr[i]];
          }
    fout=fopen("rucsac.out", "w");
    fprintf(fout, "%d\n", max);
    fclose(fout);
    return 0;
}