제출 #891245

#제출 시각아이디문제언어결과실행 시간메모리
891245SorahISAFinancial Report (JOI21_financial)C++17
0 / 100
4051 ms12884 KiB
#ifndef SorahISA #define SorahISA #include SorahISA __FILE__ SorahISA const int INF = INT_MAX; void solve() { int N, D; cin >> N >> D; vector<int> A(N); for (int &x : A) cin >> x; vector dp(2, vector<int>(N, 0)); for (int pick = 1; pick <= N+1; ++pick) { fill(ALL(dp[pick&1]), INF); if (pick == 1) dp[pick&1][0] = A[0]; for (int i = 1; i < N; ++i) { for (int j = i-1; j >= max(i-D, int(0)); --j) { chmin(dp[pick&1][i], (dp[(pick^1)&1][j] >= A[i] ? dp[pick&1][j] : A[i])); } // debug(pick, i, dp[pick&1][i]); } if (dp[pick&1][N-1] == INF) { cout << pick - 1 << "\n"; break; } } } int32_t main() { fastIO(); int t = 1; // cin >> t; for (int _ = 1; _ <= t; ++_) { solve(); } return 0; } #else #ifdef local #define _GLIBCXX_DEBUG 1 #endif #pragma GCC optimize("Ofast", "unroll-loops") #include <bits/stdc++.h> using namespace std; using int64 = long long; #define int int64 using float80 = long double; #define double float80 using pii = pair<int, int>; template <typename T> using Prior = std::priority_queue<T>; template <typename T> using prior = std::priority_queue<T, vector<T>, greater<T>>; #define eb emplace_back #define ef emplace_front #define ee emplace #define pb pop_back #define pf pop_front #define ALL(x) begin(x), end(x) #define RALL(x) rbegin(x), rend(x) #define SZ(x) ((int)(x).size()) #ifdef local #define fastIO() void() #define debug(...) \ fprintf(stderr, "\u001b[33m"), \ fprintf(stderr, "At [%s], line %d: (%s) = ", __FUNCTION__, __LINE__, #__VA_ARGS__), \ _do(__VA_ARGS__), \ fprintf(stderr, "\u001b[0m") template <typename T> void _do(T &&_t) { cerr << _t << "\n"; } template <typename T, typename ...U> void _do(T &&_t, U &&..._u) { cerr << _t << ", ", _do(_u...); } #else #define fastIO() ios_base::sync_with_stdio(0), cin.tie(0) #define debug(...) void() #endif template <typename T, typename U> bool chmin(T &lhs, U rhs) { return lhs > rhs ? lhs = rhs, 1 : 0; } template <typename T, typename U> bool chmax(T &lhs, U rhs) { return lhs < rhs ? lhs = rhs, 1 : 0; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...