Cod sursa(job #2928508)

Utilizator ulkevinsam kevin ulkevin Data 23 octombrie 2022 08:30:05
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <limits.h>

using namespace std;

//#define MAX_N 6000002
#define MAX_N 4

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 =  INT_MAX;
    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++) {

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

        int new_sum = partial_sums[j] - partial_sums[partial_sum_min_i - 1];

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

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

    return 0;
}