2020-02-01 20:02:27 C++

C++

Copy Copied! Full
#include <bits/stdc++.h> #define ALL(A) (A).begin(), (A).end() #define ll long long #define rep(i, n) for (int i = 0; i < (n); i++) const ll mod = 1e9 + 7; const ll INF = -1 * ((1LL << 63) + 1); const int inf = -1 * ((1 << 31) + 1); using namespace std; ll dp[2005]; // dp[i] := i 番目のスライムを作るのに必要な最小コスト int main(void){ cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(20); ll N,x; cin >> N >> x; vector<ll> a(N); rep(i,N) { cin >> a[i]; } rep(i,N){ dp[i] = a[i]; for(int j = 0; j < N;j++){ dp[i] = min(dp[i],a[(i-j+N)%N] + (j*x) ); } } ll ans = 0; cout << dp[2] << endl; rep(i,N)ans += dp[i]; cout << ans << endl; // i 番目のスライムについて、左から持ってくるか新しく作るか考える }
RECOMMEND