Problem p04035 (C++)

Buggy submission (status: Time Limit Exceeded):
// #pragma GCC optimize("Ofast,no-stack-protector")
#pragma GCC target(                                                            \
    "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#pragma GCC optimize("unroll-loops")
// #pragma GCC optimize("fast-math")
/*#pragma GCC optimize("section-anchors")
#pragma GCC optimize("profile-values,profile-reorder-functions,tracer")
#pragma GCC optimize("vpt")
#pragma GCC optimize("rename-registers")
#pragma GCC optimize("move-loop-invariants")
#pragma GCC optimize("unswitch-loops")

#pragma GCC optimize("function-sections")
#pragma GCC optimize("data-sections")
#pragma GCC optimize("branch-target-load-optimize")
#pragma GCC optimize("branch-target-load-optimize2")
#pragma GCC optimize("btr-bb-exclusive")*/
#pragma comment(linker, "/STACK:367077216")
#define _CRT_SECURE_NO_WARNINGS
#include <algorithm>
#include <bitset>
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <deque>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <string>
#include <time.h> //////////////
#include <unordered_map>
#include <unordered_set>
#include <vector>
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
// #define endl '\n'
#define mp make_pair
#define pbc push_back
#define pob pop_back()
#define empb emplace_back
#define queuel queue<long long>
#define sqr(a) ((a) * (a))
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define pin(p) cin >> p.first >> p.second;
#define uniq(a)                                                                \
  sort(all(a));                                                                \
  (a).resize(unique(all(a)) - a.begin());
#define rev(v) reverse(v.begin(), v.end());
#define sout(s, c)                                                             \
  for (auto i : s)                                                             \
    cout << i << c;
#define pout(p) cout << p.first << " " << p.second;
#define er(v, l, r) erase(v.begin() + l, v.begin() + r);
#define vin(v)                                                                 \
  for (ll i = 0; i < v.size(); ++i)                                            \
    cin >> v[i];
#define vout(v, c)                                                             \
  for (int i = 0; i < v.size(); ++i)                                           \
    cout << v[i] << c;
#define pushi(v, a)                                                            \
  for (int i = 0; i < a.size(); ++i)                                           \
    v.push_back(a[i]);
#define fastio()                                                               \
  ios_base::sync_with_stdio(0);                                                \
  cout.tie(0);                                                                 \
  cin.tie(0);                                                                  \
  srand(time(NULL))
#define dab(v)                                                                 \
  for (auto i : v)                                                             \
    cout << i << ' ';
#define sp system("pause")
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
using namespace std;
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
const ld EPS = 1e-9;
const ld PI = acos(-1);
int mod = (int)998244353;
const int MOD7 = 1000000007;
const int MOD9 = 1000000009;
const int a228 = 18;
const int inf = 1e9;
const ll kekmod = 1791791791;
const ll bestmod = 1148822869;
const ll secmod = (int)1e9 + 113;
vector<ll> mods = {kekmod, bestmod, mod, MOD9, 1000000007};
vector<ll> hashpows = {29, 31, 37, 43, 47, 53, 179, 229};
// mt19937_64
// rnd(chrono::high_resolution_clock::now().time_since_epoch().count() + 228 +
// 'i' + 'q' + 1337 + 1488); ll MOD = mods[rnd() % mods.size()]; ll hashpow =
// hashpows[rand() % hashpows.size()];

signed main() {
  fastio();
  int n, k;
  cin >> n >> k;
  vector<int> a(n);
  vin(a);
  for (int i = 0; i < n - 1; ++i) {
    if (a[i] + a[i + 1] >= k) {
      cout << "Possible" << endl;
      for (int j = 0; j < i; ++j) {
        cout << j + 1 << endl;
      }
      for (int j = n - 2; j >= i + 1; ++j) {
        cout << j + 1 << endl;
      }
      cout << i + 1;
      sp;
      return 0;
    }
  }
  cout << "Impossible";
  sp;
}

Fixed submission:
// #pragma GCC optimize("Ofast,no-stack-protector")
#pragma GCC target(                                                            \
    "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#pragma GCC optimize("unroll-loops")
// #pragma GCC optimize("fast-math")
/*#pragma GCC optimize("section-anchors")
#pragma GCC optimize("profile-values,profile-reorder-functions,tracer")
#pragma GCC optimize("vpt")
#pragma GCC optimize("rename-registers")
#pragma GCC optimize("move-loop-invariants")
#pragma GCC optimize("unswitch-loops")

#pragma GCC optimize("function-sections")
#pragma GCC optimize("data-sections")
#pragma GCC optimize("branch-target-load-optimize")
#pragma GCC optimize("branch-target-load-optimize2")
#pragma GCC optimize("btr-bb-exclusive")*/
#pragma comment(linker, "/STACK:367077216")
#define _CRT_SECURE_NO_WARNINGS
#include <algorithm>
#include <bitset>
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <deque>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <string>
#include <time.h> //////////////
#include <unordered_map>
#include <unordered_set>
#include <vector>
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
// #define endl '\n'
#define mp make_pair
#define pbc push_back
#define pob pop_back()
#define empb emplace_back
#define queuel queue<long long>
#define sqr(a) ((a) * (a))
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define pin(p) cin >> p.first >> p.second;
#define uniq(a)                                                                \
  sort(all(a));                                                                \
  (a).resize(unique(all(a)) - a.begin());
#define rev(v) reverse(v.begin(), v.end());
#define sout(s, c)                                                             \
  for (auto i : s)                                                             \
    cout << i << c;
#define pout(p) cout << p.first << " " << p.second;
#define er(v, l, r) erase(v.begin() + l, v.begin() + r);
#define vin(v)                                                                 \
  for (ll i = 0; i < v.size(); ++i)                                            \
    cin >> v[i];
#define vout(v, c)                                                             \
  for (int i = 0; i < v.size(); ++i)                                           \
    cout << v[i] << c;
#define pushi(v, a)                                                            \
  for (int i = 0; i < a.size(); ++i)                                           \
    v.push_back(a[i]);
#define fastio()                                                               \
  ios_base::sync_with_stdio(0);                                                \
  cout.tie(0);                                                                 \
  cin.tie(0);                                                                  \
  srand(time(NULL))
#define dab(v)                                                                 \
  for (auto i : v)                                                             \
    cout << i << ' ';
#define sp system("pause")
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
using namespace std;
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
const ld EPS = 1e-9;
const ld PI = acos(-1);
int mod = (int)998244353;
const int MOD7 = 1000000007;
const int MOD9 = 1000000009;
const int a228 = 18;
const int inf = 1e9;
const ll kekmod = 1791791791;
const ll bestmod = 1148822869;
const ll secmod = (int)1e9 + 113;
vector<ll> mods = {kekmod, bestmod, mod, MOD9, 1000000007};
vector<ll> hashpows = {29, 31, 37, 43, 47, 53, 179, 229};
// mt19937_64
// rnd(chrono::high_resolution_clock::now().time_since_epoch().count() + 228 +
// 'i' + 'q' + 1337 + 1488); ll MOD = mods[rnd() % mods.size()]; ll hashpow =
// hashpows[rand() % hashpows.size()];

signed main() {
  fastio();
  int n, k;
  cin >> n >> k;
  vector<int> a(n);
  vin(a);
  for (int i = 0; i < n - 1; ++i) {
    if (a[i] + a[i + 1] >= k) {
      cout << "Possible" << endl;
      for (int j = 0; j < i; ++j) {
        cout << j + 1 << endl;
      }
      for (int j = n - 2; j >= i + 1; --j) {
        cout << j + 1 << endl;
      }
      cout << i + 1;
      sp;
      return 0;
    }
  }
  cout << "Impossible";
  sp;
}