Problem p03136 (C++)

Buggy submission (status: Time Limit Exceeded):
#include <algorithm>
#include <bitset>
#include <ciso646>
#include <cmath>
#include <complex>
#include <cstdio>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
const ll mod = 998244353;
const ll INF = (ll)1000000007 * 1000000007;
typedef pair<int, int> P;
#define stop                                                                   \
  char nyaa;                                                                   \
  cin >> nyaa;
#define rep(i, n) for (int i = 0; i < n; i++)
#define per(i, n) for (int i = n - 1; i >= 0; i--)
#define Rep(i, sta, n) for (int i = sta; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)
#define per1(i, n) for (int i = n; i >= 1; i--)
#define Rep1(i, sta, n) for (int i = sta; i <= n; i++)
typedef long double ld;
typedef complex<ld> Point;
const ld eps = 1e-9;
const ld pi = acos(-1.0);
typedef pair<ll, ll> LP;
int l[10];
random_device rnd;
mt19937 mt(rnd());
uniform_int_distribution<> rd(0, 65534);
void bogo_sort(int n) {
  bool f = true;
  bool used[10];
  while (f) {
    fill(used, used + n, false);
    vector<int> v;
    int cnt = 0;
    while (cnt < n) {
      int t = rd(mt) % n;
      if (used[t])
        continue;
      v.push_back(l[t]);
      used[t] = true;
      cnt++;
    }
    rep(i, n) { l[i] = v[i]; }
    f = false;
    rep(i, n - 1) {
      if (l[i] > l[i + 1])
        f = true;
    }
  }
}
int main() {
  int n;
  cin >> n;
  rep(i, n) { cin >> l[i]; }
  bogo_sort(n);
  int sum = 0;
  rep(i, n - 1) { sum += l[i]; }
  if (sum > l[n - 1]) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
  // stop
  return 0;
}


Fixed submission:
#include <algorithm>
#include <bitset>
#include <ciso646>
#include <cmath>
#include <complex>
#include <cstdio>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
const ll mod = 998244353;
const ll INF = (ll)1000000007 * 1000000007;
typedef pair<int, int> P;
#define stop                                                                   \
  char nyaa;                                                                   \
  cin >> nyaa;
#define rep(i, n) for (int i = 0; i < n; i++)
#define per(i, n) for (int i = n - 1; i >= 0; i--)
#define Rep(i, sta, n) for (int i = sta; i < n; i++)
#define rep1(i, n) for (int i = 1; i <= n; i++)
#define per1(i, n) for (int i = n; i >= 1; i--)
#define Rep1(i, sta, n) for (int i = sta; i <= n; i++)
typedef long double ld;
typedef complex<ld> Point;
const ld eps = 1e-9;
const ld pi = acos(-1.0);
typedef pair<ll, ll> LP;
int l[10];
random_device rnd;
mt19937 mt(rnd());
uniform_int_distribution<> rd(0, 65533);
void bogo_sort(int n) {
  bool f = true;
  bool used[10];
  while (f) {
    fill(used, used + n, false);
    vector<int> v;
    int cnt = 0;
    while (cnt < n) {
      int t = rd(mt) % n;
      if (used[t])
        continue;
      v.push_back(l[t]);
      used[t] = true;
      cnt++;
    }
    rep(i, n) { l[i] = v[i]; }
    f = false;
    rep(i, n - 1) {
      if (l[i] > l[i + 1])
        f = true;
    }
  }
}
int main() {
  int n;
  cin >> n;
  rep(i, n) { cin >> l[i]; }
  bogo_sort(n);
  int sum = 0;
  rep(i, n - 1) { sum += l[i]; }
  if (sum > l[n - 1]) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
  // stop
  return 0;
}