fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define int long long
  6. const int N = 5005;
  7. int n;
  8. int a[N], ps[N];
  9.  
  10. void solve(){
  11. cin >> n;
  12. for(int i = 1; i <= n; i++){
  13. cin >> a[i];
  14. ps[i] = ps[i - 1] + a[i];
  15. }
  16.  
  17. int ans = 0;
  18. // Duyệt mọi điểm bắt đầu l của đoạn con
  19. for(int l = 1; l <= n; l++){
  20. // Vì đoạn con 2-Sum phải tách thành 2 phần có tổng bằng nhau,
  21. // nên độ dài (r - l + 1) bắt buộc phải là số chẵn.
  22. // Do đó ta tăng r nhảy cóc 2 bước mỗi lần (r += 2) để tối ưu tốc độ.
  23. for(int r = l + 1; r <= n; r += 2){
  24. int len = r - l + 1;
  25. int mid = l + len / 2 - 1; // Điểm chia đôi đoạn [l, r]
  26.  
  27. int sum1 = ps[mid] - ps[l - 1]; // Tổng nửa đầu
  28. int sum2 = ps[r] - ps[mid]; // Tổng nửa sau
  29.  
  30. if(sum1 == sum2){
  31. ans = max(ans, len);
  32. }
  33. }
  34. }
  35. cout << ans << "\n";
  36. }
  37.  
  38. signed main() {
  39. ios_base::sync_with_stdio(0);
  40. cin.tie(0);
  41. solve();
  42. return 0;
  43. }
Success #stdin #stdout 0s 5316KB
stdin
6
2
10
3
2
5
1
stdout
0