Cod sursa(job #1723645)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 1 iulie 2016 11:33:13
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <cstdio>
#define MAXG 10000
int dp[MAXG+1];
char good[MAXG+1];
int main(){
   FILE*fi,*fout;
   int N,G,W,P,i,j,max;
   fi=fopen("rucsac.in" ,"r");
   fout=fopen("rucsac.out" ,"w");
   fscanf(fi,"%d%d" ,&N,&G);
   good[0]=1;
   for(i=1;i<=N;i++){
      fscanf(fi,"%d%d" ,&W,&P);
      for(j=G;j>=W;j--)
       if(dp[j]<dp[j-W]+P&&good[j-W]==1){
          dp[j]=dp[j-W]+P;
          good[j]=1;
       }
   }
   for(i=1;i<=G;i++)
    if(dp[i]>max)
      max=dp[i];
   fprintf(fout,"%d" ,max);
   fclose(fi);
   fclose(fout);
   return 0;
}