Submission #825522

#TimeUsernameProblemLanguageResultExecution timeMemory
825522NK_Building Bridges (CEOI17_building)C++17
30 / 100
3056 ms2768 KiB
// Success consists of going from failure to failure without loss of enthusiasm #include <bits/stdc++.h> using namespace std; #define nl '\n' #define pb push_back #define mp make_pair #define f first #define s second #define sz(x) int(x.size()) template<class T> using V = vector<T>; using vi = V<int>; using ll = long long; using pl = pair<ll, ll>; using vl = V<ll>; // using vpi = V<pi>; const ll INFL = ll(1e16) + 1008; const int nax = 1e6 + 6; const int SQ = 1e3 + 1; int main() { cin.tie(0)->sync_with_stdio(0); int N; cin >> N; vi A(N); for(auto& x : A) cin >> x; vi W(N); for(auto& x : W) cin >> x; vl P = {0}; for(auto& x : W) P.pb(P.back() + x); auto query = [&](int l, int r) { if (l > r) return 0LL; return P[r + 1] - P[l]; }; auto sq = [&](int x) { return x * 1LL * x; }; vl dp(N, INFL); dp[0] = 0; for(int i = 1; i < N; i++) { for (int j = 0; j < i; j++) { ll cost = sq(A[i] - A[j]) + query(j + 1, i - 1); dp[i] = min(dp[i], dp[j] + cost); } } cout << dp.back() << nl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...