hackerrank-solutions/algorithms/dynamic_programming/maxsubarray/solution.cpp

39 lines
700 B
C++

#include <iostream>
#include <algorithm>
int main()
{
using namespace std;
size_t T;
cin >> T;
while (T--) {
size_t N;
cin >> N;
int v;
cin >> v;
N--;
long long max_sum_cont = v;
long long max_sum_cont_tmp = v;
long long max_sum_noncont = v;
while (N--) {
cin >> v;
max_sum_cont_tmp = max((long long)v, max_sum_cont_tmp + v);
max_sum_cont = max(max_sum_cont, max_sum_cont_tmp);
max_sum_noncont = max((long long)v, max_sum_noncont + (v > 0 ? v : 0));
}
cout << max_sum_cont << ' ' << max_sum_noncont << endl;
}
return 0;
}