結果
| 問題 | No.5 数字のブロック |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-22 23:09:43 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 4,861 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
#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;
}
/*
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣬⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⠀⢠⣶⠟⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⢠⣿⠏⣼⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⣾⣿⡆⣿⣿⡃⣿⣧⣝⢿⡻⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀
* ⠀⠀⠀⠀⢸⣿⣿⣿⢸⣿⣴⣾⣿⣿⣯⣳⣜⢿⣿⣿⣿⣿⡇⠀⠀⠀
* ⠀⠀⠀⠀⡌⣿⣿⣿⡈⣿⢀⣤⣤⣭⡉⠙⢿⡏⣿⣿⣿⣿⡇⠀⠀⠀
* ⠀⠀⠀⢀⢸⡟⣿⣿⢷⡌⢸⣿⣿⣿⣿⣷⡜⢷⣿⣿⣿⣿⡇⠀⠀⠀
* ⠀⠀⠀⠸⢘⡀⢻⣿⣦⡀⣙⡛⠛⠛⠿⠿⠿⢸⣿⣿⣿⣿⠃⠀⠀⠀
* ⠀⠀⠀⠀⢰⠀⢠⣍⠙⠻⣿⣿⣿⣷⣶⣦⠀⣾⣿⣿⣿⠃⠀⠀⠀⠀
* ⠀⠀⠀⠀⠈⢦⣾⢹⣿⣦⢘⣋⡁⠀⠀⢙⠃⣿⣿⠟⠁⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⠈⢻⣾⣿⡏⠸⣿⡿⠿⠿⠟⢀⣡⣄⠀⠀⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⠀⠈⣾⠟⠀⠀⠠⢤⣼⣿⣆⢻⣿⣿⣷⡀⠀⠀⠀⠀⠀
* ⠀⠀⠀⠀⠀⠀⠘⠁⣊⣐⡀⣴⣶⡼⠟⣡⣾⣿⣿⣿⣷⡀⠀⠀⠀⠀
* ⠀⠀⠀⠀⡀⠀⢀⣴⣿⣿⣿⠿⠋⠀⠘⣻⣿⡿⢻⣿⣿⣿⢆⠀⠀⠀
* ⠀⠀⠀⣠⡅⠐⢿⣙⠾⠿⠁⣰⣶⡾⢘⣋⣩⣾⡆⣿⣿⣿⣿⡆⠀⠀
* ⠀⠀⠀⣿⡇⠀⠀⠙⠷⢷⣶⣭⣍⡁⣾⣿⣿⣿⡗⣿⣿⣿⣿⠇⠀⠀
* ⠀⠀⠀⢿⡇⠀⠀⠀⠀⠀⣿⣶⣶⡄⢿⡛⠛⠛⠛⣸⠿⢏⠉⠀⠀⠀
* ⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀⠙⠛⠛⠁⠀⠈⠁⠀⠁⠀⠀⠀⠀⠀⠀⠀
*/