Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include "../input.h"
  4. using namespace std;
  5.  
  6. int recsum(int l, int r, vector<int>& A) {
  7.     if (r - l == 0) {
  8.         return 0;
  9.     }
  10.     if (r - l == 1) {
  11.         return A.at(l);
  12.     }
  13.  
  14.     int max;
  15.     int max1 = recsum(l, (r+l)/2, A);
  16.     int max2 = recsum((r+l)/2, r, A);
  17.     int max3;
  18.  
  19.     int maxl = 0;
  20.     int maxr = 0;
  21.  
  22.     int tmp = 0;
  23.     for (int i = (r+l)/2; i < r; i++) {
  24.         tmp += A.at(i);
  25.         if (tmp > maxr) {
  26.             maxr = tmp;
  27.         }
  28.     }
  29.  
  30.     tmp = 0;
  31.     for (int i = (r+l)/2-1; i >= l; i--) {
  32.         tmp += A.at(i);
  33.         if (tmp >= maxl) {
  34.             maxl = tmp;
  35.         }
  36.     }
  37.  
  38.     max3 = maxl + maxr;
  39.  
  40.  
  41.     if (max3 >= max2) {
  42.         max = max3;
  43.     } else {
  44.         max = max2;
  45.     }
  46.     if (max1 >= max) {
  47.         max = max1;
  48.     }
  49.  
  50.     return max;
  51. }
  52.  
  53. int maxsum(vector<int>& A) {
  54.     int max = recsum(0, A.size(), A);
  55.     if (max <= 0) {
  56.         max = 0;
  57.     }
  58.   return max;
  59. }
  60.  
  61. int main() {
  62.   Input();
  63.   int size;
  64.   while(cin >> size) {
  65.     vector<int> v(size);
  66.     for(int& x : v) cin >> x;
  67.     cout << maxsum(v) << endl;
  68.   }
  69.   Diff();
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement