제출 #333286

#제출 시각아이디문제언어결과실행 시간메모리
333286blue수열 (APIO14_sequence)C++11
0 / 100
1109 ms1260 KiB
#include <iostream> #include <vector> using namespace std; int main() { long long n, k; cin >> n >> k; long long a[n+1]; a[0] = 0; for(long long i = 1; i <= n; i++) { cin >> a[i]; a[i] += a[i-1]; } vector<long long> split(k+2); //The i'th split occurs between split[i] and split[i+1] for(long long i = 0; i <= k; i++) split[i] = i; split[k+1] = n; bool flag = 0; long long x, y, m; long long segA, segB; for(int i = 1; i <= ((long long)(1e8))/k; i++) { flag = 1; for(long long i = k; i >= 1; i--) { segA = a[split[i]] - a[split[i-1]]; segB = a[split[i+1]] - a[split[i]]; if(segA == segB) { continue; } if(segA > segB) { if(segA - (a[split[i]] - a[split[i]-1]) < segB) { continue; } } if(segB > segA) { if(segB - (a[split[i]+1] - a[split[i]]) < segA) { continue; } } flag = 0; x = split[i-1] + 1; y = split[i+1] - 1; while(y - x > 1) { m = (x+y)/2; segA = a[m] - a[split[i-1]]; segB = a[split[i+1]] - a[m]; if(segA == segB) { x = y = m; } else if(segA > segB) { y = m; if(segA - (a[m] - a[m-1]) < segB) x = m; } else { x = m; if(segA > segB - (a[m+1] - a[m])) y = m; } } if(x == y) split[i] = x; else split[i] = ((a[split[i+1]] - a[y] > a[x] - a[split[i]]) ? y : x); } } long long res = a[n] * a[n]; for(long long i = 1; i <= k+1; i++) res -= (a[split[i]] - a[split[i-1]]) * (a[split[i]] - a[split[i-1]]); cout << res/2 << '\n'; for(long long i = 1; i <= k; i++) cout << split[i] << ' '; cout << '\n'; }

컴파일 시 표준 에러 (stderr) 메시지

sequence.cpp: In function 'int main()':
sequence.cpp:22:10: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
   22 |     bool flag = 0;
      |          ^~~~
#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...