Advertisement
kdzhr

Клумбы | AC

May 8th, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. // AC http://contest.uni-smr.ac.ru/ru/problemset/6131/
  2. #include <iostream>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. int main() {
  7.     size_t n;
  8.     std::cin >> n;
  9.     std::vector<size_t> f(n);
  10.     for (size_t i = 0; i < n; i++) {
  11.         std::cin >> f[i];
  12.     }
  13.     std::vector<size_t> type(n + 1);
  14.     std::vector<size_t> dp(n + 1);
  15.     dp[0] = 0;
  16.     dp[1] = f[0] * 2;
  17.     type[0] = -1;
  18.     type[1] = 1;
  19.     for (size_t i = 2; i < n + 1; i++) {
  20.         if (std::max(dp[i - 2], 2 * (((f[i - 1] + 1) / 2) + (f[i - 2] + 1) / 2)) < std::max(dp[i - 1], f[i - 1] * 2)) {
  21.             dp[i] = std::max(dp[i - 2], 2 * (((f[i - 1] + 1) / 2) + (f[i - 2] + 1) / 2));
  22.             type[i] = 2;
  23.         } else {
  24.             dp[i] = std::max(dp[i - 1], f[i - 1] * 2);
  25.             type[i] = 1;
  26.         }
  27.     }
  28.     std::cout << dp[n] << '\n';
  29.     size_t i = n;
  30.     std::vector<size_t> res;
  31.     while (i != 0) {
  32.         res.push_back(type[i]);
  33.         if (type[i] == 2) {
  34.             res.push_back(type[i]);
  35.         }
  36.         i -= type[i];
  37.     }
  38.     std::for_each(res.rbegin(), res.rend(), [](size_t elem) { std::cout << elem << ' '; });
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement