• Source
    1. #include <iostream>
    2. #include <cstdio>
    3. #include <algorithm>
    4. using namespace std;
    5. const int N=601;
    6. const int M=2500001;
    7. int a[N],b[N],d[M];
    8. int c[M];
    9. int main()
    10. {
    11. int i,j,n,m,e,f,g,h,k;
    12. cin>>m>>n;
    13. for(i=1;i<=n;i++)
    14. cin>>b[i]>>a[i];
    15. k=1;
    16. d[k]=0;
    17. for(i=1;i<=n;i++)
    18. {
    19. sort(d+1,d+k+1);
    20. for(j=k;j>=1;j--)
    21. {
    22. if(d[j]+a[i]<=m)
    23. {
    24. if(c[d[j]+a[i]]==0)
    25. {
    26. k++;
    27. d[k]=d[j]+a[i];
    28.  
    29. }
    30. c[d[j]+a[i]]=max(c[d[j]+a[i]],c[d[j]]+b[i]);
    31. }
    32. }
    33. }
    34. int ans=0;
    35. for(i=1;i<=m;i++)
    36. ans=max(ans,c[i]);
    37. cout<<ans<<endl;
    38. return 0;
    39. }
    40.  
    41.  
    42.