結果
問題 | No.5 数字のブロック |
ユーザー |
👑 |
提出日時 | 2022-08-07 16:10:13 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,293 bytes |
コンパイル時間 | 1,198 ms |
コンパイル使用メモリ | 71,824 KB |
最終ジャッジ日時 | 2025-01-30 19:13:59 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 TLE * 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 ){bool computing = true;while( computing ){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;computing = false;} else {L -= d;for( auto itr = W_min_list.begin() , end = W_min_list.end() ; itr != end ; itr++ ){W.erase( *itr );}answer += num;}}return;}