結果
問題 | No.2386 Udon Coupon (Easy) |
ユーザー |
![]() |
提出日時 | 2023-07-21 21:24:18 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 216 ms / 2,000 ms |
コード長 | 3,613 bytes |
コンパイル時間 | 3,090 ms |
コンパイル使用メモリ | 251,276 KB |
実行使用メモリ | 17,024 KB |
最終ジャッジ日時 | 2024-09-21 22:38:17 |
合計ジャッジ時間 | 7,261 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 |
ソースコード
#line 2 "library/src/stream.hpp"#include <ctype.h>#include <stdio.h>#include <string>namespace kyopro {/*** 文字を1個読み込む*/inline char readchar() {char c = getchar_unlocked();while (isspace(c)) c = getchar_unlocked();return c;}/*** 整数の入出力*/template <typename T> constexpr inline void readint(T& a) {a = 0;bool is_negative = false;char c = getchar_unlocked();while (isspace(c)) {c = getchar_unlocked();}if (c == '-') is_negative = true, c = getchar_unlocked();while (isdigit(c)) {a = 10 * a + (c - '0');c = getchar_unlocked();}if (is_negative) a *= -1;}template <typename Head, typename... Tail>constexpr inline void readint(Head& head, Tail&... tail) {readint(head);readint(tail...);}template <typename T> void write_int(T a) {if (!a) {putchar_unlocked('0');putchar_unlocked('\n');return;}if (a < 0) putchar_unlocked('-'), a *= -1;char s[37];int now = 37;while (a) {s[--now] = (char)'0' + a % 10;a /= 10;}while (now < 37) putchar_unlocked(s[now++]);}template <typename T> constexpr inline void putint(T a) {if (!a) {putchar_unlocked('0');putchar_unlocked('\n');return;}if (a < 0) putchar_unlocked('-'), a *= -1;char s[37];int now = 37;while (a) {s[--now] = (char)'0' + a % 10;a /= 10;}while (now < 37) putchar_unlocked(s[now++]);putchar_unlocked('\n');}template <typename Head, typename... Tail>constexpr inline void putint(Head head, Tail... tail) {putint(head);putint(tail...);}/*** 文字列の入出力*/inline void readstr(std::string& str) {char c = getchar_unlocked();while (isspace(c)) c = getchar_unlocked();while (!isspace(c)) {str += c;c = getchar_unlocked();}}inline void readstr(std::string& str,std::string& tail...) {readstr(str);readstr(tail);}inline void putstr(const std::string& str) {for (auto c : str) {putchar_unlocked(c);}putchar_unlocked('\n');}inline void putstr(const std::string& str, const std::string& tail...) {putstr(str);putstr(tail);}}; // namespace kyopro/*** @brief fastIO*/#line 2 "library/src/template.hpp"#include <bits/stdc++.h>#define rep(i, N) for (int i = 0; i < (N); i++)#define all(x) std::begin(x), std::end(x)#define popcount(x) __builtin_popcountll(x)using i128 = __int128_t;using ll = long long;using ld = long double;using graph = std::vector<std::vector<int>>;using P = std::pair<int, int>;constexpr int inf = 1e9;constexpr ll infl = 1e18;constexpr ld eps = 1e-12;const long double pi = acosl(-1);constexpr uint64_t MOD = 1e9 + 7;constexpr uint64_t MOD2 = 998244353;constexpr int dx[] = {-1, -1, -1, 0, 0, 1, 1, 1, 0};constexpr int dy[] = {-1, 0, 1, -1, 1, -1, 0, 1, 0};template <typename T1, typename T2> constexpr inline bool chmax(T1& a, T2 b) {return a < b && (a = b, true);}template <typename T1, typename T2> constexpr inline bool chmin(T1& a, T2 b) {return a > b && (a = b, true);}#line 3 "a.cpp"using namespace std;using namespace kyopro;int n, a, b, c;map<int, int> memo;int f(int x){if (x == 0) return 0;if (memo.count(x)) return memo[x];if (x >= 3) chmax(memo[x], a + f(x - 3));if (x >= 5) chmax(memo[x], b + f(x - 5));if (x >= 10) chmax(memo[x], c + f(x - 10));return memo[x];}int main() {readint(n, a, b, c);putint(f(n));}