Submission #1187964

#TimeUsernameProblemLanguageResultExecution timeMemory
1187964versesrevSplit the sequence (APIO14_sequence)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <limits>
#include <numeric>

int main() {
  int n, k;
  std::cin >> n >> k;
  std::vector<int> xs(n);
  for (int& x : xs) std::cin >> x;
  
  std::vector<lonv long> sum(n);
  std::partial_sum(xs.begin(), xs.end(), sum.begin());
  
  long long INF = std::numeric_limit<long long>::max();
  std::vector<std::vector<long long>> dp(k+1, std::vector<long long>(n));
  std::vector<std::vector<int>> back(k+1, std::vector<int>(n, -1));
  //dp[0].assign(n, INF), dp[1].assign(n, INF);
  for (int i = 0; i < n; ++i) {
    dp[0][i] = sum[i] * sum[i];
    back[0][i] = -1;
  }
  for (int ik = 1; ik <= k; ++ik) {
    for (int i = 0; i < n; ++i) {
      for (int j = ik; j <= i; ++j) {
        long long v = dp[ik-1][j-1] +
          (sum[i] - sum[j-1]) *
          (sum[i] - sum[j-1])
        );
        if (dp[ik][i] > v) {
          dp[ik][i] = v;
          back[ik][i] = j - 1;
        }
      }
    }
  }
  std::vector<int> ans;
  for (int p = n - 1, ik = k; ik; --ik) {
    p = back[ik][p];
    ans.push_back(p + 1);
  }
  std::ranges::reverse(ans);
  for (int v : ans) std::cout << v << " ";
  std::cout << "\n";
}

Compilation message (stderr)

sequence.cpp: In function 'int main()':
sequence.cpp:12:15: error: 'lonv' was not declared in this scope; did you mean 'long'?
   12 |   std::vector<lonv long> sum(n);
      |               ^~~~
      |               long
sequence.cpp:12:24: error: template argument 1 is invalid
   12 |   std::vector<lonv long> sum(n);
      |                        ^
sequence.cpp:12:24: error: template argument 2 is invalid
sequence.cpp:13:46: error: request for member 'begin' in 'sum', which is of non-class type 'int'
   13 |   std::partial_sum(xs.begin(), xs.end(), sum.begin());
      |                                              ^~~~~
sequence.cpp:15:24: error: 'numeric_limit' is not a member of 'std'; did you mean 'numeric_limits'?
   15 |   long long INF = std::numeric_limit<long long>::max();
      |                        ^~~~~~~~~~~~~
      |                        numeric_limits
sequence.cpp:15:38: error: expected primary-expression before 'long'
   15 |   long long INF = std::numeric_limit<long long>::max();
      |                                      ^~~~
sequence.cpp:20:19: error: invalid types 'int[int]' for array subscript
   20 |     dp[0][i] = sum[i] * sum[i];
      |                   ^
sequence.cpp:20:28: error: invalid types 'int[int]' for array subscript
   20 |     dp[0][i] = sum[i] * sum[i];
      |                            ^
sequence.cpp:27:15: error: invalid types 'int[int]' for array subscript
   27 |           (sum[i] - sum[j-1]) *
      |               ^
sequence.cpp:27:24: error: invalid types 'int[int]' for array subscript
   27 |           (sum[i] - sum[j-1]) *
      |                        ^
sequence.cpp:28:15: error: invalid types 'int[int]' for array subscript
   28 |           (sum[i] - sum[j-1])
      |               ^
sequence.cpp:28:24: error: invalid types 'int[int]' for array subscript
   28 |           (sum[i] - sum[j-1])
      |                        ^
sequence.cpp:42:16: error: 'reverse' is not a member of 'std::ranges'; did you mean 'std::reverse'?
   42 |   std::ranges::reverse(ans);
      |                ^~~~~~~
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from sequence.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:1145:5: note: 'std::reverse' declared here
 1145 |     reverse(_BidirectionalIterator __first, _BidirectionalIterator __last)
      |     ^~~~~~~