fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. signed main() {
  5. int N,K; cin>>N>>K;
  6. vector<int> v3;
  7. vector<int> v2;
  8. vector<int> v;
  9. int temp;
  10. bool cmp = true;
  11. for(int i = 0;i<N;i++){
  12. cin>>temp;
  13. if(v2.size() == 0){
  14. v2.push_back(temp);
  15. continue;
  16. }
  17. if(v2.size()!=0 && temp<v2.back()){
  18. cmp = false;
  19. }
  20. if(cmp) v2.push_back(temp);
  21. else v3.push_back(temp);
  22. }
  23. reverse(v3.begin(),v3.end());
  24. int idx= 0;
  25. for(int i = 0;i<v2.size();i++){
  26. while(idx<v3.size() && v2[i]>v3[idx]){
  27. v.push_back(v3[idx]);
  28. idx++;
  29. }
  30. v.push_back(v2[i]);
  31. }
  32.  
  33. int i = 0,j = v.size()-1;
  34. int ans = 1e18+5;
  35. while(i<=j){
  36. ans = min(ans,abs(K-v[i]*v[j]));
  37. if(v[i]*v[j]<K) i++;
  38. else if(v[i]*v[j] == K){
  39. cout<<0;
  40. exit(0);
  41. }
  42. else j--;
  43. }
  44. cout<<ans;
  45. return 0;
  46. }
Success #stdin #stdout 0s 5288KB
stdin
4 20
3 4 6 6
stdout
2