fork download
  1. #include<bits/stdc++.h>
  2. #define f1(i, n) for(ll i=1;i<=n;++i)
  3. #define f0(i, n) for(ll i=0;i<n;++i)
  4. #define ull unsigned long long
  5. #define ll long long
  6. #define rev(a) reverse(a.begin(),a.end())
  7. #define all(x) x.begin(),x.end()
  8. #define so(A, n) sort(A+1, A+n+1)
  9. using namespace std;
  10. const int maxn = 200010;
  11. const int N = 2e5 + 5;
  12. int main()
  13. {
  14. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  15. int n;
  16. cin >> n;
  17. ll A[n + 5];
  18. ll sum = 0;
  19. f1(i, n) {
  20. cin >> A[i];
  21. sum += A[i];
  22. }
  23. sum = (sum / 2) + (sum % 2);
  24. ll curr_sum = 0;
  25. int i = 1, j = 1, res = INT_MAX;
  26. multiset<int> ms;
  27. while (j <= n) {
  28. ms.insert(A[j]);
  29. curr_sum += A[j];
  30. if (curr_sum >= sum) {
  31. int dau = * (ms.begin());
  32. if (curr_sum - dau >= sum) {
  33. res = min(res, (int)(ms.size() - 1));
  34. }
  35. else res = min(res, (int)(ms.size()));
  36. ms.erase(ms.lower_bound(A[i]));
  37. curr_sum -= A[i];
  38. ++i;
  39. }
  40. else {
  41. ++j;
  42. }
  43. }
  44. cout << res;
  45.  
  46. return 0;
  47. }
  48.  
  49.  
  50.  
Success #stdin #stdout 0.01s 5328KB
stdin
Standard input is empty
stdout
4825