Advertisement
Alex_tz307

USACO 2016 February Contest, Gold Problem 2. Circular Barn Revisited

Mar 31st, 2021
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3.  
  4. using namespace std;
  5.  
  6. ifstream fin("cbarn2.in");
  7. ofstream fout("cbarn2.out");
  8.  
  9. const int INF = 1e16L;
  10.  
  11. void min_self(int &a, int b) {
  12.   a = min(a, b);
  13. }
  14.  
  15. void solve() {
  16.   int N, K;
  17.   fin >> N >> K;
  18.   vector<int> req(N + 1);
  19.   for (int i = 1; i <= N; ++i)
  20.     fin >> req[i];
  21.   int ans = INF;
  22.   for (int rep = 0; rep < N; ++rep) {
  23.     vector<vector<int>> dp(K + 1, vector<int>(N + 2, INF));
  24.     dp[0][N + 1] = 0;
  25.     for (int k = 1; k <= K; ++k) {
  26.       for (int i = 1; i <= N; ++i) {
  27.         int add = 0;
  28.         for (int j = i + 1; j <= N + 1; ++j) {
  29.           add += (j - 1 - i) * req[j - 1];
  30.           min_self(dp[k][i], dp[k - 1][j] + add);
  31.         }
  32.       }
  33.     }
  34.     min_self(ans, dp[K][1]);
  35.     int aux = req[1];
  36.     for (int i = 2; i <= N; ++i)
  37.       req[i - 1] = req[i];
  38.     req[N] = aux;
  39.   }
  40.   fout << ans << '\n';
  41. }
  42.  
  43. void close_files() {
  44.   fin.close();
  45.   fout.close();
  46. }
  47.  
  48. int32_t main() {
  49.   solve();
  50.   close_files();
  51.   return 0;
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement