Submission #1113201

#TimeUsernameProblemLanguageResultExecution timeMemory
1113201HiepVu217Feast (NOI19_feast)C++17
100 / 100
115 ms10324 KiB
#include <bits/stdc++.h> #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") #define int long long using namespace std; const int N = 3e5 + 17; int n, k; long long a[N]; pair <long long, int> f[N], m; pair <int, int> calc(int c) { pair <int, int> m = {0, 0}; f[0] = {0, 0}; for (int i=1; i<=n; i++) { f[i]=f[i-1]; if (m.first + a[i] - c > f[i].first || (m.first + a[i] - c == f[i].first && m.second + 1 < f[i].second)) { f[i].first = m.first + a[i]-c; f[i].second = m.second + 1; } if (f[i].first - a[i] > m.first || (f[i].first - a[i] == m.first && f[i].second < m.second)) { m.first = f[i].first - a[i]; m.second = f[i].second; } } return f[n]; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i = 1; i <= n; ++i) { cin >> a[i]; a[i] += a[i - 1]; } long long l = 1, r = 3e14; while (l < r) { long long mid = l + r + 1 >> 1; m = calc (mid); if (m.second >= k) { l = mid; continue; } r = mid - 1; } m = calc(l); long long ans = l * m.second + m.first; cout << ans; }

Compilation message (stderr)

feast.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization ("O3")
      | 
feast.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization ("unroll-loops")
      | 
feast.cpp: In function 'int32_t main()':
feast.cpp:46:31: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   46 |         long long mid = l + r + 1 >> 1;
      |                         ~~~~~~^~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...