Cod sursa(job #2928528)

Utilizator ulkevinsam kevin ulkevin Data 23 octombrie 2022 11:14:14
Problema Subsecventa de suma maxima Scor 15
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <limits.h>

using namespace std;

//#define MAX_N 6000002
#define MAX_N 20

int input_array[MAX_N] = {0};
int partial_sums[MAX_N] = {0};

int main() {
    int N = 0;

    ifstream cinfile("ssm.in");
    ofstream coutfile("ssm.out");

    // index from 1!
    cinfile >> N;
    for (int i = 1; i <= N; i++) {
        cinfile >> input_array[i];
    }


    //1. Generate the array of partial sums corresponding to 
    // input_array
    int sum_1_to_j = 0;
    for (int j = 1; j <= N; j++) {
        sum_1_to_j += input_array[j];
        partial_sums[j] = sum_1_to_j;
    }


    // 2.
    int partial_sum_min =  0;
    int partial_sum_min_i = 0;
    int max_sum = INT_MIN;
    int max_sum_i = 0;
    int max_sum_j = 0;

    for (int j = 1; j <= N; j++) {

        int new_sum = partial_sums[j] - partial_sum_min;

        if (new_sum > max_sum) {
            max_sum = new_sum;
            max_sum_i = partial_sum_min_i + 1;
            max_sum_j = j;
        }

        if (partial_sums[j] < partial_sum_min) {
            partial_sum_min = partial_sums[j];
            partial_sum_min_i = j;
        }

    }

    coutfile << max_sum << " " << max_sum_i << " " << max_sum_j << endl;
    

    return 0;
}