Pagini recente » Cod sursa (job #145658) | Cod sursa (job #69451) | Cod sursa (job #2284919) | Cod sursa (job #78143) | Cod sursa (job #2928509)
#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;
}