fork download
  1. #include<bits/stdc++.h>
  2. #define f1(i, n) for(ll i=1;i<=n;++i)
  3. #define f0(i, n) for(ll i=0;i<n;++i)
  4. #define ull unsigned long long
  5. #define ll long long
  6. #define rev(a) reverse(a.begin(),a.end())
  7. #define all(x) x.begin(),x.end()
  8. #define so(A, n) sort(A+1, A+n+1)
  9. using namespace std;
  10. // using int64 = long long;
  11. // using i128 = __int128_t;
  12. const int maxn = 1e6 + 1;
  13. const int N = 5e5 + 1;
  14. int main()
  15. {
  16. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  17. int n;
  18. ll x;
  19. cin >> n >> x;
  20. map<ll, vector<pair<int, int>>> mp;
  21. ll A[n + 1];
  22. f1(i, n) {
  23. cin >> A[i];
  24. }
  25. f1(i, n) {
  26. for (int j = i + 1; j <= n; ++j) {
  27. mp[A[i] + A[j]].push_back(make_pair(i, j));
  28. }
  29. }
  30. for (int i = 1; i <= n; ++i) {
  31. for (int j = i + 1; j <= n; ++j) {
  32. if (A[i] + A[j] < x) {
  33. int motcaigiday = x - A[i] - A[j];
  34. if (!mp[motcaigiday].empty()) {
  35. for (int k = 0; k < mp[motcaigiday].size(); ++k) {
  36. if (mp[motcaigiday][k].first != i && mp[motcaigiday][k].second != j && mp[motcaigiday][k].first != j && mp[motcaigiday][k].second != i) {
  37. cout << i << " " << j << " " << mp[motcaigiday][k].first << " " << mp[motcaigiday][k].second;
  38. return 0;
  39. }
  40. }
  41. }
  42. }
  43. }
  44. }
  45. cout << "IMPOSSIBLE";
  46.  
  47.  
  48. return 0;
  49. }
  50.  
  51.  
Success #stdin #stdout 0.66s 145220KB
stdin
Standard input is empty
stdout
IMPOSSIBLE