Cod sursa(job #2909091)

Utilizator baragan30Baragan Andrei baragan30 Data 8 iunie 2022 19:58:08
Problema Subsecventa de suma maxima Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");


/*
 * vec  - vector of elements
 * s[k] - the bigest sum vec[i] + vec[i+1]+ ...+ vec[k], i<=k
 *
 */
int n,firstIndexOfMaxSum = 0,lastIndexOfMaxSum =0,maxSum =0;
int read(){
    in >> n ;

    int lastSum = 0;
    int lastIndex = 0;
    for(int i = 0 ; i < n ; i ++){
        int x;
        in>>x;

        int newSum = lastSum + x;
        if(newSum > x){
            lastSum = newSum;
        }else{
            lastSum = x;
            lastIndex = i;
        }
        if(lastSum > maxSum){
            maxSum = lastSum;
            firstIndexOfMaxSum = lastIndex;
            lastIndexOfMaxSum = i;
        }

    }
    return firstIndexOfMaxSum;
}
void output(){
    out << maxSum << " " << firstIndexOfMaxSum + 1<< " " << lastIndexOfMaxSum + 1 ;
}
int main() {
    read();
    output();
    return 0;
}