Cod sursa(job #2661914)

Utilizator goblinupufosPopescu Traian goblinupufos Data 22 octombrie 2020 21:55:02
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int n;
int sir[6000006];

int main() {
    fin >> n;

    int suma;
    int suma_max;
    int inceput_max = 1, final = 1, inceput = 1;

    for (int i = 1; i <= n; ++i) {
        fin >> sir[i];

        //rezolvare
        if (i == 1) {
            suma = sir[1];
            suma_max = suma;

            if (suma < 0) {
                suma = 0;
            }
        } else {
            suma = suma + sir[i];

            if (suma > suma_max) {
                suma_max = suma;
                final = i;
                inceput_max = inceput;
            }

            if (suma < 0) {
                suma = 0;
                inceput = i + 1;
            }
        }
    }

//    int suma = sir[1];
//    int suma_max = suma;
//    int inceput_max = 1, final = 1, inceput = 1;

//    if (suma < 0) {
//        suma = 0;
//    }

//    for (int i = 2; i <= n; ++i) {
//        suma = suma + sir[i];
//
//        if (suma > suma_max) {
//            suma_max = suma;
//            final = i;
//            inceput_max = inceput;
//        }
//
//        if (suma < 0) {
//            suma = 0;
//            inceput = i + 1;
//        }
//    }

    fout << suma_max << " " << inceput_max << " " << final;

    return 0;
}