結果

問題 No.5 数字のブロック
コンテスト
ユーザー Raj
提出日時 2026-05-22 23:09:43
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 4,861 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,654 ms
コンパイル使用メモリ 341,176 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-22 23:09:52
合計ジャッジ時間 6,570 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 7 WA * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <algorithm>
#include <bits/stdc++.h>
#include <numeric>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<string, string> pss;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<pll> vll;

#define sz(x) (int)(x).size()
#define len(x) (int)(x).length()
#define rep(i, n) for (int i = 0; i < n; ++i)
#define leer(x, n)                                                             \
  for (int k = 0; k < n; k++)                                                  \
  cin >> x[k]
#define pb push_back
#define trav(a, x) for (auto &a : x)
#define all(x) x.begin(), x.end()
template <class T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }

const int M = 1000000007;

struct UnionFind {
  vi e;
  UnionFind(int n) : e(n, -1) {}
  bool same(int a, int b) { return find(a) == find(b); }
  int size(int x) { return -e[find(x)]; }
  int find(int x) { return e[x] < 0 ? x : e[x] = find(e[x]); }
  bool join(int a, int b) {
    a = find(a), b = find(b);
    if (a == b)
      return false;
    if (e[a] > e[b])
      swap(a, b);
    e[a] += e[b];
    e[b] = a;
    return true;
  }
};

bool pairSort(pair<long double, ll> a, pair<long double, ll> b) {
  if (a.first < b.first)
    return true;
  if (b.first < a.first)
    return false;
  return b.second < a.second;
}

struct reverseSort {
  bool operator()(int a, int b) { return a > b; }
};

ll binpow(ll a, ll b, ll m) {
  a %= m;
  ll res = 1;
  while (b > 0) {
    if (b & 1)
      res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}

string canonical_form(const string &S) {
  string T;
  for (auto &c : S) {
    T.push_back(c);
    if ((int)T.size() >= 4 and T.substr(T.size() - 4, 4) == "(xx)") {
      T.erase(end(T) - 4, end(T));
      T += "xx";
    }
  }
  return T;
}

void imprimir(queue<int> q) {
  while (!q.empty()) {
    cout << q.front() << ' ';
    q.pop();
  }
}

int n, m, x, y, i, j, k;
const int inf = 1 << 30;

int isok(ll x, ll k, vl a) {
  ll nk = 0;
  for (int i = 1; i < a.size(); i++) {
    if (a[i] < x) {
      nk += (x - a[i] + i - 1) / i;
      if (nk > k)
        return 0;
    }
  }
  return 1;
}
void solve() {
  int l, n;
  cin >> l >> n;
  int ans = 1;
  vi w(n);
  rep(i, n) cin >> w[i];
  sort(w.begin(), w.end());
  int i = 0, d = n - 1;
  int sum = 0;
  while (i <= d) {
    if (sum + w[i] > l && sum + w[d] > l) {
      ans++;
      sum = 0;
      continue;
    }
    if (sum + w[d] <= l) {
      sum += w[d];
      d--;
    } else {
      sum += w[i];
      i++;
    }
  }
  cout << ans << '\n';
}

int t;

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  // cin >> t;
  t = 1;
  while (t--)
    solve();
  return 0;
}

/*
 *                    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣬⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⠀⢠⣶⠟⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⢠⣿⠏⣼⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⣾⣿⡆⣿⣿⡃⣿⣧⣝⢿⡻⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⢸⣿⣿⣿⢸⣿⣴⣾⣿⣿⣯⣳⣜⢿⣿⣿⣿⣿⡇⠀⠀⠀
 *                    ⠀⠀⠀⠀⡌⣿⣿⣿⡈⣿⢀⣤⣤⣭⡉⠙⢿⡏⣿⣿⣿⣿⡇⠀⠀⠀
 *                    ⠀⠀⠀⢀⢸⡟⣿⣿⢷⡌⢸⣿⣿⣿⣿⣷⡜⢷⣿⣿⣿⣿⡇⠀⠀⠀
 *                    ⠀⠀⠀⠸⢘⡀⢻⣿⣦⡀⣙⡛⠛⠛⠿⠿⠿⢸⣿⣿⣿⣿⠃⠀⠀⠀
 *                    ⠀⠀⠀⠀⢰⠀⢠⣍⠙⠻⣿⣿⣿⣷⣶⣦⠀⣾⣿⣿⣿⠃⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠈⢦⣾⢹⣿⣦⢘⣋⡁⠀⠀⢙⠃⣿⣿⠟⠁⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⠈⢻⣾⣿⡏⠸⣿⡿⠿⠿⠟⢀⣡⣄⠀⠀⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⠀⠈⣾⠟⠀⠀⠠⢤⣼⣿⣆⢻⣿⣿⣷⡀⠀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⠀⠀⠘⠁⣊⣐⡀⣴⣶⡼⠟⣡⣾⣿⣿⣿⣷⡀⠀⠀⠀⠀
 *                    ⠀⠀⠀⠀⡀⠀⢀⣴⣿⣿⣿⠿⠋⠀⠘⣻⣿⡿⢻⣿⣿⣿⢆⠀⠀⠀
 *                    ⠀⠀⠀⣠⡅⠐⢿⣙⠾⠿⠁⣰⣶⡾⢘⣋⣩⣾⡆⣿⣿⣿⣿⡆⠀⠀
 *                    ⠀⠀⠀⣿⡇⠀⠀⠙⠷⢷⣶⣭⣍⡁⣾⣿⣿⣿⡗⣿⣿⣿⣿⠇⠀⠀
 *                    ⠀⠀⠀⢿⡇⠀⠀⠀⠀⠀⣿⣶⣶⡄⢿⡛⠛⠛⠛⣸⠿⢏⠉⠀⠀⠀
 *                    ⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀⠙⠛⠛⠁⠀⠈⠁⠀⠁⠀⠀⠀⠀⠀⠀⠀
 */
0