Submission #330691

#TimeUsernameProblemLanguageResultExecution timeMemory
330691vitkishloh228Bigger segments (IZhO19_segments)C++14
100 / 100
234 ms20844 KiB
#include<iostream> #include<vector> #include<algorithm> using namespace std; #define int long long int32_t main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } vector<int> pr(n + 1); for (int i = 0; i < n; ++i) { pr[i + 1] = pr[i] + a[i]; } vector<int> dp(n + 1), bb(n + 1); for (int i = 1; i <= n; ++i) { bb[i] = max(bb[i], bb[i - 1]); dp[i] = dp[bb[i]] + 1; int x = pr[i] - pr[bb[i]]; int ini = i + 1, fim = n, meio, best = 0; while (ini <= fim) { meio = (ini + fim) >> 1; if (pr[meio] - pr[i] >= x) { fim = meio - 1; best = meio; } else ini = meio + 1; } bb[best] = i; } cout << dp[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...