結果
問題 | No.5 数字のブロック |
ユーザー |
👑 |
提出日時 | 2022-08-07 16:07:43 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,276 bytes |
コンパイル時間 | 643 ms |
コンパイル使用メモリ | 71,792 KB |
最終ジャッジ日時 | 2025-01-30 19:13:13 |
ジャッジサーバーID (参考情報) |
judge1 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 MLE * 7 |
ソースコード
#include <iostream>#include <list>#include <string>#include <stdio.h>#include <stdint.h>using namespace std;using ll = long long;void Solve( ll& L , list<ll>& W , ll& answer );int main(){ll L;ll N;list<ll> W{};cin >> L;cin >> N;for( ll i = 0 ; i < N ; i++ ){ll w;cin >> w;W.push_back( w );}ll answer = 0;Solve( L , W , answer );cout << answer << endl;return 0;}void Solve( ll& L , list<ll>& W , ll& answer ){ll W_min = 0;ll num = 0;list<list<ll>::iterator> W_min_list{};for( auto itr = W.begin() , end = W.end() ; itr != end ; itr++ ){const ll& w = *itr;if( W_min == 0 ){W_min = w;num = 1;W_min_list.push_back( itr );} else if( W_min == w ){num++;W_min_list.push_back( itr );} else if( W_min > w ){W_min = w;num = 1;W_min_list.clear();W_min_list.push_back( itr );}}const ll d = W_min * num;if( L <= d ){answer += L / W_min;} else {L -= d;for( auto itr = W_min_list.begin() , end = W_min_list.end() ; itr != end ; itr++ ){W.erase( *itr );}answer += num;W_min_list.clear();Solve( L , W , answer );}return;}