fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. struct node
  7. {
  8. int x,y;
  9. node(int x1,int y1)
  10. {
  11. x=x1;
  12. y=y1;
  13. }
  14. };
  15.  
  16. bool comp(node*a,node*b)
  17. {
  18. return a->x < b->x;
  19. }
  20.  
  21. int main() {
  22.  
  23. int n,x;
  24. cin>>n>>x;
  25.  
  26. vector<node*> a;
  27. for(int i=0;i<n;i++)
  28. {
  29. int y;
  30. cin>>y;
  31. a.push_back(new node(y,i));
  32. }
  33.  
  34. sort(a.begin(),a.end(),comp);
  35. vector<int> V;
  36. int flag=0;
  37. for(int i=0;i<n;i++)
  38. {
  39. int j=i+1;
  40. int k=n-1;
  41. while(j < k)
  42. {
  43. if(a[i]->x + a[j]->x + a[k]->x == x)
  44. {
  45. V.push_back(a[i]->y);
  46. V.push_back(a[j]->y);
  47. V.push_back(a[k]->y);
  48. flag=1;
  49. break;
  50. }
  51. else if(a[i]->x + a[j]->x + a[k]->x < x)
  52. {
  53. j++;
  54. }
  55. else
  56. {
  57. k--;
  58. }
  59. }
  60. if(flag ==1)
  61. {
  62. break;
  63. }
  64. }
  65. sort(V.begin(),V.end());
  66. for(int i=0;i<V.size();i++)
  67. {
  68. cout<<V[i]+1<<" ";
  69. }
  70. cout<<endl;
  71.  
  72. return 0;
  73. }
Success #stdin #stdout 0s 5284KB
stdin
4 8
2 7 5 1
stdout
1 3 4