fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. ll go(ll n,ll a,ll b,ll c,ll *dp)
  5. {
  6. if(n<0) return -1;
  7. else if(n==0) return 0;
  8. else
  9. {
  10. ll &ans=dp[n];
  11. if(ans!=-3) return ans;
  12. else
  13. {
  14. ll option1 = go(n-a,a,b,c,dp);
  15. ll option2 = go(n-b,a,b,c,dp);
  16. ll option3 = go(n-c,a,b,c,dp);
  17. if(option1==-1&&option2==-1&&option3==-1)
  18. ans=-1;
  19. else
  20. ans=1+max(max(option2,option3),option1);
  21. return ans;
  22. }
  23. }
  24. }
  25. int main()
  26. {
  27. ll n,a,b,c;
  28. cin>>n>>a>>b>>c;
  29. ll * dp = new ll[4010];
  30. for(ll i=0;i<=n;i++)
  31. {
  32. dp[i]=-3;
  33. }
  34. cout<<go(n,a,b,c,dp)<<endl;
  35.  
  36.  
  37. }
Success #stdin #stdout 0s 4444KB
stdin
0 2 2 4
stdout
0