Cod sursa(job #2841949)

Utilizator BarbuceanuConstantinBarbuceanu Constantin BarbuceanuConstantin Data 30 ianuarie 2022 19:21:10
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;

const char iname[] = "ssm.in";
const char oname[] = "ssm.out";
const int MAXN = 6000100;
int best[MAXN], n;

#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main(void) {
    ifstream in(iname); ofstream out(oname);
    in >> n;
	FOR (i, 1, n)  in >> best[i];
    int bestSum = INT_MIN, sum = best[1], beginning = 1, ending = 1, idx;

    FOR(i, 2, n) {
        sum = MAX(best[i - 1] + best[i], best[i]);
        if(sum == best[i - 1] + best[i]) {
            ending = i;
        } else if(sum == best[i]) {
            beginning = ending = i;
        }
        if(bestSum < sum) {
            bestSum = sum;
        }
    }
    out << bestSum << " " << beg << " " << end;

    in.close(), out.close();
    return 0;
}