Tasks Details
  
    
    
      
        
           
        
          
        
       
      
        
          
          
          
          
            
              
                
        
        
          
  
    
      
    
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
  
          
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
  
          
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
            
        
    
  
  
  
    
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
       
    
       
    
  
          
            
          
        
       
    
   
 
                      
                    
                  
                
              
            
          
          
        
      
    
  
    
          easy
        
        
            1.
            
              MaxSliceSum
            
          
          
            Find a maximum sum of a compact subsequence of array elements.
          
        
  
    
    Task Score
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Correctness
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Performance
    
    
  
  
    
      
        
          
            
        
      
    
  
        
              100%
            
          A non-empty array A consisting of N integers is given. A pair of integers (P, Q), such that 0 ≤ P ≤ Q < N, is called a slice of array A. The sum of a slice (P, Q) is the total of A[P] + A[P+1] + ... + A[Q].
Write a function:
int solution(vector<int> &A);
that, given an array A consisting of N integers, returns the maximum sum of any slice of A.
For example, given array A such that:
A[0] = 3 A[1] = 2 A[2] = -6 A[3] = 4 A[4] = 0the function should return 5 because:
- (3, 4) is a slice of A that has sum 4,
 - (2, 2) is a slice of A that has sum −6,
 - (0, 1) is a slice of A that has sum 5,
 - no other slice of A has sum greater than (0, 1).
 
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..1,000,000];
 - each element of array A is an integer within the range [−1,000,000..1,000,000];
 - the result will be an integer within the range [−2,147,483,648..2,147,483,647].
 
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
              
            
          
            Solution
            
            
              
                
              
            
          
          
          
            
              Programming language used C++
            
          
          
            
            
              Time spent on task 1 minutes
              
            
            
          
          
          
            
              
                
                  Notes
                  
                    
                  
                
               
              
                
              
              
                
                  
                    
                  
                  
                  
                  
                  
                    
                  
                  
                    
                      
                        
  
  
                      
                        
                          not defined yet
                        
                      
                      
                    
                    
                  
        Code: 14:10:05 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    
        Code: 14:10:07 UTC,
        
          cpp,
        
        
          autosave 
        
      
      
      
      
    
        Code: 14:10:11 UTC,
        
          cpp,
        
        
          autosave 
        
      
      
      
      
    // you can use includes, for example:
// #include <algorithm>
// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;
int solution(vector<int> &A) {
    // write your code in C++14 (g++ 6.2.0)
    vector<int> max;
    int result = 0;
    
    max.push_back(A[0]);
    
    for(int i = 1; i < A.size(); i++)
        max.push_back((max[i - 1] + A[i] > A[i]) ? max[i - 1] + A[i] : A[i]);
 
    for(int i = 0; i < max.size(); i++)
        result = (result < max[i]) ? max[i] : result;
        
    return result;
}
            
        Code: 14:10:40 UTC,
        
          cpp,
        
        
          autosave 
        
      
      
      
      
    // you can use includes, for example:
// #include <algorithm>
// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;
int solution(vector<int> &A) {
    // write your code in C++14 (g++ 6.2.0)
    if(A.size() < 2)
        return A[0];
    
    vector<int> max;
    int result = 0;
    
    max.push_back(A[0]);
    
    for(int i = 1; i < A.size(); i++)
        max.push_back((max[i - 1] + A[i] > A[i]) ? max[i - 1] + A[i] : A[i]);
 
 
 
    for(int i = 0; i < max.size(); i++)
        result = (result < max[i]) ? max[i] : result;
        
    return result;
}
            
        Code: 14:10:58 UTC,
        
          cpp,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    // you can use includes, for example:
// #include <algorithm>
// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;
int solution(vector<int> &A) {
    // write your code in C++14 (g++ 6.2.0)
    if(A.size() < 2)
        return A[0];
    
    vector<int> max;
    
    max.push_back(A[0]);
    
    for(int i = 1; i < A.size(); i++)
        max.push_back((max[i - 1] + A[i] > A[i]) ? max[i - 1] + A[i] : A[i]);
 
 
    int result = max[0];
 
    for(int i = 1; i < max.size(); i++)
        result = (result < max[i]) ? max[i] : result;
        
    return result;
}
            
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 14:11:01 UTC,
        
          cpp,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    // you can use includes, for example:
// #include <algorithm>
// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;
int solution(vector<int> &A) {
    // write your code in C++14 (g++ 6.2.0)
    if(A.size() < 2)
        return A[0];
    
    vector<int> max;
    
    max.push_back(A[0]);
    
    for(int i = 1; i < A.size(); i++)
        max.push_back((max[i - 1] + A[i] > A[i]) ? max[i - 1] + A[i] : A[i]);
 
 
    int result = max[0];
 
    for(int i = 1; i < max.size(); i++)
        result = (result < max[i]) ? max[i] : result;
        
    return result;
}
            
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 14:11:04 UTC,
        
          cpp,
        
        
          final,
          
            score: 
              
                100
              
              
          
          
        
      
      
      
      
    // you can use includes, for example:
// #include <algorithm>
// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;
int solution(vector<int> &A) {
    // write your code in C++14 (g++ 6.2.0)
    if(A.size() < 2)
        return A[0];
    
    vector<int> max;
    
    max.push_back(A[0]);
    
    for(int i = 1; i < A.size(); i++)
        max.push_back((max[i - 1] + A[i] > A[i]) ? max[i - 1] + A[i] : A[i]);
 
 
    int result = max[0];
 
    for(int i = 1; i < max.size(); i++)
        result = (result < max[i]) ? max[i] : result;
        
    return result;
}
            Analysis summary
            
  The solution obtained perfect score.
          Analysis 
          
            
          
        
        
          
  
    
      Detected time complexity:
        
          O(N)
        
        
      
        
          expand all 
        
        Correctness tests
      
      
        
        
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                6.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                7.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                8.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                9.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                6.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                7.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                8.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                9.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                10.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                11.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                12.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                13.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                14.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                15.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                16.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                17.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                18.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                19.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                20.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                21.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                22.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                23.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                24.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                25.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                26.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                27.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.001 s
                
              
              
              
                
                  OK