Submission #339732

#TimeUsernameProblemLanguageResultExecution timeMemory
339732blueSplit the sequence (APIO14_sequence)C++11
0 / 100
17 ms1132 KiB
#include <iostream> #include <vector> using namespace std; long long sq(long long a) { return a*a; } int main() { int n, k; cin >> n >> k; long long a[n+1]; a[0] = 0; for(int i = 1; i <= n; i++) { cin >> a[i]; a[i] += a[i-1]; } int right[k+2]; //rightmost element belonging to the i'th part from the left. right[0] = 0; for(int j = 1; j <= k; j++) right[j] = j; right[k+1] = n; bool flag = 1; while(flag) { flag = 0; for(int j = k; j >= 1; j--) { while(right[j]+1 < right[j+1] && a[ right[j+1] ] - a[ right[j]+1 ] > a[ right[j] ] - a[ right[j-1] ]) { right[j]++; flag = 1; } } } long long res = sq(a[n]); for(int j = 1; j <= k+1; j++) res -= sq(a[ right[j] ] - a[ right[j-1] ]); res /= 2; cout << res << '\n'; for(int i = 1; i <= k; i++) cout << right[i] << ' '; cout << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...