1 solutions
-
0
C :
#include<stdio.h> #include<math.h> long long f[10001]; int n,m; int main() { int j,i; scanf("%d%d",&m,&n); for (int i=0;i<=m;i++) f[i]=0; int t,s; for ( i=1;i<=n;i++) { scanf("%d%d",&s,&t); for ( j=t;j<=m;j++) if (f[j]<f[j-t]+s) f[j]=f[j-t]+s; } printf("%lld\n",f[m]); return 0; }C++ :
#include<stdio.h> int w[10020],v[10040]; int dp[10030]; int ma(int x,int y) { return x>y?x:y; } int main() { int m,n,i,j; scanf("%d%d",&m,&n); for(i=1;i<=n;i++) { scanf("%d%d",&v[i],&w[i]); } for(i=1;i<=n;i++) { for(j=w[i];j<=m;j++) { dp[j]=ma(dp[j],dp[j-w[i]]+v[i]); } } printf("%d\n",dp[m]); return 1; }Pascal :
//codeless; var m,n,tip,i,j:longint; f,score,time:array[0..10000] of longint; function max(a,b:longint):longint; begin if a>b then exit(a) else exit(b); end; begin readln(m,n); for i:=1 to n do readln(score[i],time[i]); for i:=1 to n do begin tip:=0; repeat inc(tip); for j:=m downto time[i] do f[j]:=max(f[j-time[i]]+score[i],f[j]); until time[i]*tip>m; end; writeln(f[m]); end.
- 1
Information
- ID
- 19391
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By