fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. struct node
  8. {
  9. int x,y,sum;
  10. node(int x1,int y1,int sum1)
  11. {
  12. x=x1;
  13. y=y1;
  14. sum=sum1;
  15. }
  16. };
  17.  
  18. struct node2
  19. {
  20. node*x;
  21. int y;
  22. node2(node*x1,int y1)
  23. {
  24. x=x1;
  25. y=y1;
  26. }
  27. };
  28.  
  29. bool duplicate(vector<int> V)
  30. {
  31. map<int,int> Map2;
  32. for(int i=0;i<V.size();i++)
  33. {
  34. if(Map2.count(V[i]) <= 0)
  35. {
  36. Map2[V[i]]=1;
  37. }
  38. else
  39. {
  40. Map2[V[i]]++;
  41. }
  42. }
  43. return Map2.size() != 4;
  44. }
  45.  
  46.  
  47. int main() {
  48.  
  49. int n,x;
  50. cin>>n>>x;
  51.  
  52. int a[n];
  53. for(int i=0;i<n;i++)
  54. {
  55. cin>>a[i];
  56. }
  57.  
  58. vector<node*> V;
  59. for(int i=0;i<n;i++)
  60. {
  61. for(int j=i+1;j<n;j++)
  62. {
  63. V.push_back(new node(i,j,a[i]+a[j]));
  64. }
  65. }
  66.  
  67. map<int,vector<node*> > Map;
  68. for(int i=0;i<V.size();i++)
  69. {
  70. Map[V[i]->sum].push_back(V[i]);
  71. }
  72.  
  73. vector<int> ans;
  74. for(int i=0;i<V.size();i++)
  75. {
  76. if((V[i]->sum != (x-V[i]->sum)) && Map.count(x-V[i]->sum) >0)
  77. {
  78. ans.clear();
  79. node*nd = Map[x-V[i]->sum][0];
  80. ans.push_back(V[i]->x);
  81. ans.push_back(V[i]->y);
  82. ans.push_back(nd->x);
  83. ans.push_back(nd->y);
  84. if(!duplicate(ans))
  85. {
  86. break;
  87. }
  88. else
  89. {
  90. ans.clear();
  91. }
  92. }
  93. else if((V[i]->sum == x-V[i]->sum) && Map[x-V[i]->sum].size() >1)
  94. {
  95. ans.clear();
  96. vector<node*> V2 = Map[V[i]->sum];
  97. int flag=0;
  98. for(int j=0;j<V2.size();j++)
  99. {
  100. node*nd = V[i];
  101. node*nd2 = V2[j];
  102. ans.push_back(nd->x);
  103. ans.push_back(nd->y);
  104. ans.push_back(nd2->x);
  105. ans.push_back(nd2->y);
  106. if(!duplicate(ans))
  107. {
  108. flag=1;
  109. break;
  110. }
  111. else
  112. {
  113. ans.clear();
  114. }
  115. }
  116. if(flag ==1)
  117. {
  118. break;
  119. }
  120. }
  121. }
  122.  
  123. if(!ans.empty())
  124. {
  125. sort(ans.begin(),ans.end());
  126. for(int i=0;i<ans.size();i++)
  127. {
  128. cout<<ans[i]+1<<" ";
  129. }
  130. cout<<endl;
  131. }
  132. else
  133. {
  134. cout<<"IMPOSSIBLE"<<endl;
  135. }
  136.  
  137. return 0;
  138. }
Success #stdin #stdout 0.03s 30900KB
stdin
1000 4
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
stdout
1 2 3 4