結果
問題 | No.385 カップ麺生活 |
ユーザー |
![]() |
提出日時 | 2016-07-01 22:50:03 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,145 bytes |
コンパイル時間 | 1,245 ms |
コンパイル使用メモリ | 111,936 KB |
実行使用メモリ | 13,636 KB |
最終ジャッジ日時 | 2024-10-12 00:53:58 |
合計ジャッジ時間 | 4,717 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 TLE * 1 |
other | AC * 2 -- * 30 |
ソースコード
#include <iostream>#include <vector>#include <algorithm>#include <string>#include <map>#include <set>#include <unordered_map>#include <unordered_set>#include <climits>#include <cmath>#include <regex>#include <queue>#define rep(i, N) for(int i = 0; i < (N); i++)using namespace std;typedef long long ll;int M, N;int C[30];bool is_prime[10010];void init_prime() {rep (i, 10001) {is_prime[i] = true;}is_prime[0] = is_prime[1] = false;int i = 2;while (i < 10000) {for (int j = i*2; j < 10000; j += i) {is_prime[j] = false;}i++;while (!is_prime[i]) i++;}}int dfs(int rem) {int ans = 0;rep (i, N) {if (rem < C[i]) continue;int rem2 = rem - C[i];if (is_prime[rem2]) {is_prime[rem2] = false;ans = max(ans, dfs(M) + 1);is_prime[rem2] = true;} else {ans = max(ans, dfs(rem2) + 1);}}return ans;}signed main() {cin >> M >> N;rep (i, N) {cin >> C[i];}init_prime();cout << dfs(M) << endl;}