Submission #646217

#TimeUsernameProblemLanguageResultExecution timeMemory
646217ymmBigger segments (IZhO19_segments)C++17
100 / 100
62 ms17076 KiB
#include <bits/stdc++.h> #define Loop(x,l,r) for (ll x = (l); x < (r); ++x) #define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x) typedef long long ll; typedef std::pair<int, int> pii; typedef std::pair<ll , ll > pll; using namespace std; const int N = 500'010; vector<int> vec; ll sum[N]; ll lst[N]; int len[N]; int main() { cin.tie(0) -> sync_with_stdio(false); int n, p = 0; ll csum = 0; cin >> n; vec.push_back(0); Loop (i,0,n) { int x; cin >> x; csum += x; if (p > vec.size()) p = vec.size()-1; while (p+1 < vec.size() && csum >= sum[vec[p+1]] + lst[vec[p+1]]) ++p; len[i+1] = len[vec[p]]+1; lst[i+1] = csum - sum[vec[p]]; sum[i+1] = csum; ll val = lst[i+1] + csum; while (val <= sum[vec.back()] + lst[vec.back()]) vec.pop_back(); vec.push_back(i+1); } cout << len[n] << '\n'; }

Compilation message (stderr)

segments.cpp: In function 'int main()':
segments.cpp:26:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |   if (p > vec.size())
      |       ~~^~~~~~~~~~~~
segments.cpp:28:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   while (p+1 < vec.size() && csum >=   sum[vec[p+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...