Submission #854536

#TimeUsernameProblemLanguageResultExecution timeMemory
854536EJIC_B_KEDAXSightseeing in Kyoto (JOI22_kyoto)C++14
10 / 100
2067 ms4340 KiB
#include <bits/stdc++.h> #include <random> #ifndef LOCAL //#pragma GCC optimize("O3") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") //#pragma GCC target("avx,avx2,bmi,bmi2,popcnt,lzcnt") #endif using namespace std; using ll = long long; using dd = double; using ld = long double; using uii = unsigned int; //#define x first //#define y second //#define all(x) x.begin(), x.end() //#define rall(x) x.rbegin(), x.rend() void solve(); mt19937_64 mt(1); int32_t main() { #ifdef LOCAL freopen("input.in", "r", stdin); freopen("output.out", "w", stdout); #else ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); //freopen("amusing.in", "r", stdin); //freopen("amusing.out", "w", stdout); #endif cout << fixed << setprecision(30); int tests = 1; //cin >> tests; while (tests--) { solve(); } } void solve() { int n, m; cin >> n >> m; vector<ll> a(n), b(m); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < m; i++) { cin >> b[i]; } vector<ll> dp(n, INT64_MAX), cnt(m, n - 1); dp[n - 1] = a[n - 1] * (m - 1); for (int i = n - 2; i >= 0; i--) { int ind = -1; for (int j = 0; j < m; j++) { ll c = dp[cnt[j]] + b[j] * (cnt[j] - i) - a[cnt[j]] * j + a[i] * j; if (dp[i] > c) { dp[i] = c; ind = j; } } for (int j = 0; j <= ind; j++) { cnt[j] = i; } } cout << dp[0] << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...