Cod sursa(job #2634208)

Utilizator ZahaZaharie Stefan Zaha Data 10 iulie 2020 08:49:34
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
using namespace std;

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

int main() {
    int n;
    fin >> n;

    int sum, start = 1, stop = 1;
    int tempSum, tempStart = 1;
    fin >> sum;
    tempSum = sum;
    bool positives = (sum < 0) ? false : true;

    for (int i = 2; i <= n; ++i) {
        int temp;
        fin >> temp;
        if (!positives) {
            if (temp >= 0)
                positives = true;
            else {
                if (temp > sum) {
                    sum = temp;
                    start = stop = i; // !
                }
            }
        }

        tempSum += temp;
        if (tempSum <= 0) {
            tempSum = 0;
            tempStart = i+1;
        } else {
            if (tempSum > sum) {
                sum = tempSum;
                start = tempStart;
                stop = i;
            } else if (tempSum == sum) {
                if (start - stop > i - tempStart) { // cauta cea mai scurta subsecventa
                    sum = tempSum;
                    start = tempStart;
                    stop = i;
                }
            }
        }
    }

    fout << sum << " " << start << " " << stop;
}