ann8497

touch-pad samsung

Jul 2nd, 2019
1,421
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. // IMPORTANT
  2. // DON'T DO IT THIS SOLUTION IS HALF COMPLETE
  3.  
  4.  
  5. #include<bits/stdc++.h>
  6. using namespace std;
  7. int n,m,o,num;
  8.  
  9. int solve(int digits[], int sign[], int op, int val, int num){
  10.   // base case
  11.   if(op>o)return INT_MAX;
  12.   if(val == num)return op;
  13.  
  14.   // recursive case
  15.   int ans1 = INT_MAX;
  16.   for(int i =0;i<n; i++){
  17.      int x = val*10 + digits[i];
  18.      ans1 = min(ans1,solve(digits,sign,op+1,x,num));
  19.   }
  20.  
  21.   int ans2 = INT_MAX;
  22.   int x;
  23.   for(int i =0;i<n;i++){
  24.       if(sign[1]==1)x = val + digits[i];
  25.          ans2 = min(ans2, solve(digits,sign,op+2,x,num));
  26.       if(sign[2]==1)x = val - digits[i];
  27.          ans2 = min(ans2, solve(digits,sign,op+2,x,num));
  28.       if(sign[3]==1)x = val *digits[i];
  29.          ans2 = min(ans2, solve(digits,sign,op+2,x,num));
  30.       if(sign[4]==1)x = val/digits[i];
  31.          ans2 = min(ans2, solve(digits,sign,op+2,x,num));
  32.   }
  33.  if(ans2!=INT_MAX)ans2++;
  34.  return min(ans1,ans2);
  35.    
  36. }
  37.  
  38. int main(){
  39.    
  40.    cin>>n>>m>>o;
  41.    int digits[n],sign[5]={0};
  42.    for(int i=0; i<n;i++)cin>>digits[i];
  43.    for(int i =0; i<m;i++){
  44.       int x; cin>>x; sign[x]++;
  45.    }
  46.    cin>>num;
  47.    int ans = INT_MAX;
  48.    for(int i =0;i<n;i++){
  49.       ans = min(ans, solve(digits,sign,1,digits[i],num));
  50.    }
  51.   if(ans!=INT_MAX)cout<<ans<<endl;
  52.   else cout<<-1<<endl;
  53.    return 0;
  54. }
Comments
Add Comment
Please, Sign In to add comment